1.简介:
ansible 是python开发的自动化运维工具,基于paramiko的工具开发,基于ssh协议,轻量级无需安装客户端,配置简单,扩展容易。
2.安装:
安装非常方便
yum install -y epel-release
yum install ansible
或者 yum install python3-pip
pip install ansible==2.8.1
3.ansible的架构图:
Ansible: Ansible的核心程序。
Hostinventory: 记录Ansible管理的主机信息,密码,端口,ip等。
Playbook: 剧本YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
Coremoudle: 核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用.
4.ansible的执行流程:
5.ansible的命令执行过程
1.加载自己的配置文件,默认/etc/ansible/ansible.cfg;
2.查找对应的主机配置文件,找到要执行的主机或者组;
3.加载自己对应的模块文件,如 command;
4.通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
5.对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
6.给文件 +x 执行权限;
7.执行并返回结果;
8.删除临时py文件,sleep 0退出;
6.ansible的配置文件
6.1ansible配置文件查找顺序
ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:
1.检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);
2.~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;
3./etc/ansible.cfg检查etc目录的配置文件
6.2配置文件详解
在安装好ansible以后,进入/etc/ansible/
就可以看到ansible的配置文件,这是安装ansible以后系统给我设置的ansible的配置文件
/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:
inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 #并发连接数,默认为5 根据需求来调整,所谓的ansible优化参数中最主要的优化参数
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60 #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)
inventory用于定义ansible要管理的主机列表,可以定义单个主机和主机组。上面的/etc/ansible/hosts就是默认的inventory。下面展示了inventory常用的定义规则。
以下是我主机的/etc/ansible/hosts文件
[root@10 ansible]# grep -Ev "^#|^$" /etc/ansible/hosts
[mariadb]
centos[6:7]
[mariadb:vars]
var1=1
var2=2
[centos:children]
mariadb
[centos:vars]
var1=5
var2-6
[all:var]
var1=3
var2=4
centos[6:7] 定义了两台主机,centos6和centos7 更通俗的理解就是centos6-centos7,换言之,假如我有100台服务器,ip地址是10.0.0.2-10.0.0.101,那么我就可以简单定义为10.0.0.[2:101] 而不用添加每台主机的IP地址
[mariadb: vars] 定义了主机组的变量 var1 和 var2,优先级最高
[centos:children] 定义一个centos组,包含的子用户组为mariadb
[centos:vars] 定义centos的主机组变量,当变量和mariadb的变量名相同时,mariadb的变量生效,优先级次之
[all:vars] 定义全局变量,优先级最低
roles: 角色目录,这个会在后面的文章中做详解,这个时playbook最常用的东西,非常重要
对于配置文件的讲解就到这里,希望对大家有所帮助。