参考链接:https://www.cnblogs.com/iois/p/6403761.html
ansible主机组的使用,我们在对一个集群进行管理的时候集群会有很多角色,在执行统一命令操作的时候我们需要对所有组进行批量操作,这个时候就需要我们的主机组了
1)主机组怎么配置呢?
Inventory文件遵循ini文件风格,[]标记分组,方便对机器列表的管理
vim /etc/ansible/hosts文件
#inventory file例子,可在这里添加主机名hostname或者ip地址
#未分组的主机,添加在最前面
122.19.45.201
hostname1
122.19.45.[1:10] #[1:10]表示所有1~10之间的数字,表示一组ip地址45.1、45.2、... #分组管理的主机,以便对不同主机进行不同的管理,同一主机可同时属于不同组
[test0] #组名
122.28.13.100
122.19.61.68:5030 #如果主机ssh端口不是22,可在地址后加:指定
[targets1]
localhost ansible_connection=local 122.28.13.10 ansible_connection=ssh ansible_ssh_user=user #指定连接类型和连接用户名
[targets2] #可配置主机变量
host1 http_port=80 host2 http_port=80 var2=xxx var3=xxx
[targets2:var] #添加关键字var,配置组变量,对属于该组的所有主机都适用
var4=xxx
var5=xxx
[targets3:children] #添加关键字children,把组作为其他组的子成员
targets1
targets2
2)主机组配置后怎么使用呢?
定义好inventory(资产)文件后,通过
1. 命令行: ansible <host-pattern> [options]
2. playbook: - hosts <host-pattern>
其中<host-pattern>部分指定对哪些机器或分组执行任务
ansible targets1 -m shell -a "hostname"
3)主机类别的正则匹配有哪些呢?
ansible支持主机列表的正则匹配
- 全量: all/*
- 逻辑或: :
- 逻辑非: !
- 逻辑与: &
- 切片: []
- 正则匹配: 以~开头
ansible all -m ping #所有默认inventory文件中的机器
ansible "*" -m ping #同上
ansible 121.28.13.* -m ping #所有122.28.13.X机器
ansible web1:web2 -m ping #所有属于组web1或属于web2的机器
ansible web1:!web2 -m ping #属于组web1,但不属于web2的机器
ansible web1&web2 -m ping #属于组web1又属于web2的机器
ansible webserver[0] -m ping #属于组webserver的第1台机器
ansible webserver[0:5] -m ping #属于组webserver的第1到4台机器
ansible "~(beta|web)\.example\.(com|org)" -m ping