Ansible介绍
Ansible是基于Python开发的自动化运维工具,可以实现批量的系统配置,服务部署等功能。Ansible批量部署不需要在远程主机上安装client/agent,ansible管理端与被管理端通过ssh进行通讯。ansible提高工作的效率,提高工作准确度,减少维护的成本,减少重复性工作。
如上图所示,ansible由Ansible、CoreModules、HostInventory、Playbooks、CustomModels和ConnectionPlugins等主要模块。
Ansible:Ansible核心程序
HostInventory:Ansible管理的主机信息
Playbooks:"剧本",YMAL格式文件,多个任务定义在一个文件中。
CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用。
Ansible命令执行过程
- 加载自己的配置文件 默认为
/etc/ansible/ansible.cfg - 查找对应的主机配置文件,找到要执行的主机或组
- 加载自己对应的模块文件,如command模块
- 通过ansible将模块或命令生成对应的临时py文件,并将文件传输给远程服务器
- 对应执行用户的家目录的
.ansible/tmp/xxx/xxx.py文件 - 给文件执行权限
- 执行并返回结果
- 删除零食py文件,
sleep 0退出
Ansible任务执行
ansible任务执行有两种模式,ad-hoc模式和playbook模式。
-
ad-hoc模式(点对点模式)
使用单个模块,支持批量执行单条命令。相当于bash中的一句话shell
-
playbook模式
playbook是ansible的主要管理方式,playbook通过多个task集合完成一类功能。
Ansible配置文件
ansible的配置文件为/etc/ansible/ansible.cfg
[defaults]
# some basic default values...
inventory = /etc/ansible/hosts #主机文件
library = /usr/share/my_modules/ #ansible模块文件
forks = 5 #并发连接数
sudo_user = root #默认执行命令用户
remote_port = 22 #被管理端端口