前言
学习之前我们还是照常简单的了解一下ansible是个什么样的工具?
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
✈ansible的特性也有很多,例如:
1.模块化:调用特定的模块,完成特定的任务;
2.有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块;
3.指出自定义模块;
4.基于Python语言;
5.部署简单,基于Python,ssh和agentless;
6.安全,基于openssh;
7.支持playbook编排任务;
8.幂等性:一个任务执行一边和执行n遍一样,不因重复执行带来意外情况;
9.无需代理不依赖PKI(无需ssl);
10.可以使用任何编程语言写模块;较强大的多层解决方案;支持丰富的数据结构。
✈✈ansible的工作模式
1. 单一的模块
2. 编写playbook,实现复杂任务的组合
3. 编辑角色,实现多层解决方案
✈✈✈ansible基本架构
✈✈✈✈ansible工作原理
安装
基本的安装有三种办法:yum 安装,pip安装,git安装;这里我使用的yum安装,yum安装最简单方便。
yum -y install ansible
我这里安装过了,然后查看版本,测试是否安装成功
ansible --version
部署测试
部署环境:我这里开启了四个虚拟机,一个控制端,三个被控端,并且全部配置为net模式,ip地址为同一个网段。
被控端要想被控制需要将ip地址加到控制端的主机配置文件/etc/ansible/hosts里面,格式如图:
ssh第一次连接的时候一般会提示输入yes 进行确认为将key字符串加入到 ./ssh/known_hosts。而本机的~/.ssh/known_hosts文件中并有fingerprint key串。按照提示输入Yes后我们再简单的测试一下,如图提示“ping”“pong”就是成功了,第一次连接没有成功的话,要把known_hosts里面的数据删掉再连接或者按下面说的修改配置文件
ansible 192.168.72.102 -m ping -k
使用简单命令来查看一下被控制端的信息
ansible 192.168.72.102 -m shell -a 'ls -l /etc/'
(注:这里绿色代表成功了,红色时报错,黄色是修改了原文件)
anisble配置文件在/etc/ansible/anisble.cfg,其中这俩项建议取消注释
#host_key_checking=False#检查对应服务器的host_key
#log_path=/var/log/ansible.log#日志文件