Ansible是一款简洁、高效的运维自动化工具。只需要将ansible安装在主控机器上,就可以通过SSH协议实现针对大量受管服务器的批量化、剧本化的管理。
1)ansible安装
软件包:ansible、sshpass、python3-jinja2、python3-pyramiko等
# yum -y install ansible //装包
# ansible --version //确认版本相关信息
2)ansible环境配置文件
全局配置:/etc/ansible/ansible.cfg
默认主机清单:/etc/ansible/hosts //存放受管主机列表
默认角色目录:/etc/ansible/roles //存放预设的各种任务角色资料
默认用户身份:root
扩展配置:
~/.ansible.cfg //用户配置,会覆盖全局配置
./ansible.cfg //工作目录配置(本文采用这种配置方式),会覆盖全局、用户配置
3)sudo提权设置
受管机接受控制的方式:
++ a. 受管机提供root用户+密码
++ b. 受管机提供已授sudo特权的普通用户(比如alice)
# visudo
alice ALL=(ALL) NOPASSWD:ALL
主控机常规设置(可以添加同名sudo授权用户):
[alice@control ~]$ mkdir ansible && cd ansible
[alice@control ansible]$ vim ansible.cfg //内容可参考全局配置文件
[defaults]
inventory = inventory //主机清单文件名
remote_user = alice //连接受管机的远程用户名
roles_path = roles //角色目录名
[privilege_escalation] //设置用户 sudo 提权
become=True //自动提权
become_method=sudo //提权方式
become_user=root //提权目标用户
become_ask_pass=False //无需密码
4)主机清单(inventory)
主机清单的作用:
++ 为接受ansible管理的大批量主机设置地址列表、分组
++ 清单地址 localhost 表示本机,无需定义
++ 清单地址 all 表示清单中所有主机,也无需定义
主机清单地址的一般写法:
[alice@control ansible]$ vim inventory //创建清单文件
172.25.254.101 //可以指定单个IP
172.25.254.102
172.25.254.[103:105] //可以指定IP地址范围
[websvrs] //可以定义分组websvrs
web1.example.com //可以指定单个可查询的FQDN名称
node1 //也可以指定主机别名(/etc/hosts中映射的地址)
[dbsvrs] //可以定义分组dbsvrs
db1.example.com
db2.example.com
db3 ansible_ssh_host=192.168.1.3 ansible_ssh_port=2222 //适用于非标主机
db4 ansible_ssh_user="zhsan" ansible_ssh_pass="1234567" //适用于非标用户
[tedu:children] //组tedu可以包含其他组(websvrs、dbsvrs)
websvrs
dbsvrs
[alice@control ~]$ ansible all --list-hosts //列出所有可控主机
.. ..