主机清单

是用来定义要管理哪些主机或者主机组,文件就叫Inventory,默认位于/etc/ansible/hosts。当然我们也可以通过修改ansible配置文件的Inventory配置项来修改默认的位置。

例子:

第一排的域名不属于任何组,[]中的就是组名

image.png

同时也支持通配符

image.png

也支持组的嵌套,下面的production包含两个子组webservers和dbservers

image.png

使用ansible来匹配主机的用法

image.png
image.png
image.png

配置文件ansible.cfg详解

ansible.cfg的配置默认分为十段

[defaults]:通用配置项
[inventory] :与主机清单相关的配置项
[privilege]:特权升级相关的配置项
[paramiko_connection]:使用paramiko连接的相关配置项
[ssh_connection]:持久连接的配置项
[accelerate]:加速模式配置项
[selinux]:selinux相关的配置项
[colors]:ansible命令输出的颜色相关的配置项
[diff]:定义是否在运行时打印diff

配置参数说明

image.png
inventory = /etc/ansible/inventory 指定主机清单的路径
forks = 5 指定并发的数量
ask_pass = True 密码验证
remote_port = 22 端口
host_key_checking = False ssh第一次连接时,需要输入yes,打开该注释,会自动接受密钥(被控端的公钥)
remote_user = devops 默认用root用户连接被控端,

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

ansible.cfg配置文件的优先级
ANSIBLE_CONFIG=/tmp/ansible.cfg
./ansible.cfg

~/.ansible.cfg
/etc/ansible/ansible.cfg

ansible安装部署

一、安装ansible

yum -y install ansible

二、配置主机清单

vim /etc/ansible/hosts
node1
node2
node3

三、配置远程连接用户,sudo提权和ssh免密

ansible all -m shell -a ‘useradd devops’ -k
ansible all -m shell -a ‘echo redhat | passwd —stdin devops’ -k
ssh-copy-id devops@node1
ssh-copy-id devops@node2
ssh-copy-id devops@node3
ansible all -m shell -a ‘echo “devops ALL=(ALL) NOPASSWD :ALL” > /etc/sudoers.d/devops’ -k

修改配置文件
vim ansible.cfg
remote_user = devops


[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

四、测试连通性

ansile all -m ping
ansible all -m shell -a ‘ls /root’
[root@ansible ~]# ansible all -m shell -a ‘pwd’ #说明配置成功
node3 | CHANGED | rc=0 >>
/home/devops