/etc/ansible/hosts
主机资产清单文件,用于定义被管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。如何配置Inventory
文件
1.主机支持主机名通配以及正则表达式,例如 web[1:3].skq.com
代表三台主机
2.主机支持基于非标准的ssh端口,例如: web1.skq.com:6666
3.主机支持指定变量,可对个别主机的特殊配置,如登陆用户,密码
4.主机组支持指定变量[group_name:vars]
,同时支持嵌套组[game:children]
场景一、基于密码连接
[root@skq.com ~]# cat /etc/ansible/hosts
#方式一、主机+端口+密码
[webservers]
10.0.0.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
10.0.0.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
#方式二、主机+端口+密码
[webservers]
web[1:2].skq.com ansible_ssh_pass='123456'
#方式三、主机+端口+密码
[webservers]
web[1:2].skq.com
[webservers:vars]
ansible_ssh_pass='123456'
场景二、基于密钥连接,需要先创建公钥和私钥,并下发公钥至被控端
利用非交换式工具实现批量分发公钥与批量管理服务器
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
# sshpass -p 1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8
# sshpass -p 000000 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.162.5
#方式一、主机+端口+密钥
[group_name]
10.0.0.31:22
10.0.0.41
#方式二、别名+主机+端口+密钥
[group_name]
nfs-node1 ansible_ssh_host=10.0.0.31 ansible_ssh_port=22
场景三、主机组使用方式
#方式一、主机组变量+主机+密码
[group_name1]
10.0.0.31
10.0.0.41
[group_name1:vars]
ansible_ssh_pass='123456'
#方式二、主机组变量+主机+密钥
[group_name2]
10.0.0.7
10.0.0.8
#定义多组,多组汇总整合
# webservers组包括两个子组[apapche,nginx]
[webservers:children]
[group_name1]
[group_name2]
生产案例1、如果控制端和被控制端第一次通讯,需要确认指纹信息,如果机器特别多少的情况下怎么办?
将 Ansible 配置文件中的 host_key_checking = False 参数注释打开即可。
但要注意ansible.cfg文件的读取顺序。