ansible主机信息
# IP 192.168.12.4 # 主机名;主机名:端口(默认端口22) # 主机信息需要加入~/.ssh/known_hosts app-01 app-01:2222 # 定义分组 [group01] 192.168.0.1 192.168.0.2 # 定义范围主机 [group02] 192.168.[0:9].2 # 表示0到9之间所有数字(包括0和9) app-[b:f].xx.com # 表示b到f之间所有字母(包括b和f) # 定义主机变量 [group03] 192.168.0.3 http_port=8080 maxRequests=800 # 设置了两个变量http_port maxRequests # 定义组变量 [group04] 192.168.0.4 192.168.0.5 [group04:vars] tomcat_port=8080 jmx_port=18090 # 定义组嵌套组,及变量传递 # 组中嵌套组,设置的变量只能在ansible-playbook中使用,ansible命令是不支持的 [group05] 192.168.0.6 [group06] 192.168.0.7 [group07:children] group05 group06 [group07:vars] tomcat_port=8080 # 其他地方定义变量 1. Inventory配置文件(默认/etc/ansible/hosts) 2. Playbook中vars定义的区域 3. Roles中vars目录下的文件 4. 主机变量文件(/etc/ansible/hosts)同级目录group_vars和hosts_vars目录下的文件 /etc/ansible/group_vars/{{组名命名的文件}} /etc/ansible/host_vars/{{主机命名的文件}} # 我们还可以在group_vars host_vars两个目录下定义all文件,来一次性的为所有的主机组和主机定义变量 建议:为了方便变量的读取,设置变量时,尽量沿用同一种方式,以便维护人员管理.
正则匹配
# 全量匹配 ansible all -m ping ansible "*" -m ping ansible 192.168.1.* -m ping # 逻辑或(or),多台主机或多个组同时执行 ansible "web1:web2" -m ping ansible 192.168.80.128:192.168.80.129 -m ping # 逻辑非(!),多重条件的匹配 # 所有在webservers组,但不在phoenix组的主机 ansible "webservers:!phoenix" -m ping # 逻辑与(&) # 同时在webservers组、phoenix组的主机 ansible "webservers:&phoenix" -m ping # 组合逻辑 # webservers和dbservers两个组中的所有主机,并且在staging组,不在phoenix组的主机 ansible "webservers:dbservers:&staging:!phoenix" -m ping # 模糊匹配 # 所有以.maxedu.com结尾的主机 ansible "*.maxedu..com" -m ping # one开头,.com结尾的所有主机和dbservers组中的主机 ansible "one*.com:dbservers" -m ping # 切割数组 [group08] host01 host02 host03 ansible group08[0] -m ping # host01 ansible group08[0:1] -m ping # host01,host02 # 正则匹配,"~"开始表示正则匹配 ansible ~(web|db).*.example.com -m ping
1