Patterns 是定義Ansible要管理的主機。但是在playbook中它指的是對應主機應用特定的配置或IT流程。
命令格式
命令行
ansible <host-pattern> [options]
playbook 中
- hosts: <host-pattern>
使用示例
ansible * -m service -a "name=httpd state=restarted"
Patterns 使用
** 匹配所有的主機 **
all
*
以上兩個Patterns 均表示匹配所有的主機
精確匹配
192.168.77.121
以上Patterns 表示只匹配192.168.77.121這一個主機
或匹配
web:db
以上Patterns 表示匹配的主機在web組或db組中
非模式匹配
"web:\!db"
命令下需轉義特殊符號,以上Patterns 表示匹配的主機在web組,不在db組中,包含在web組,又在db中的用戶
交集匹配
"web:&db"
以上Patterns 表示匹配的主機同時在db組和dbservers組中
** 通配符匹配**
web-*.com:dbserver
webserver[0]
webserver[0:25]
*表示所有字符,[0]表示組第一個成員,[0:25] 表示組第1個到第24個成員,類似python中得切片
正則表達式匹配
~(web|db).*\.example\.com
在開頭的地方使用“~”,表示這是一個正則表達式
組合匹配
"webservers:dbservers:&staging:!phoenix"
在webservers 或者dbservers 組中,必須還存在于staging 組中,但是不在phoenix 組中
在ansible-palybook 命令中,你也可以使用變量來組成這樣的表達式,但是你必須使用“-e”的選項來指定這個表達式
webservers:!{{excluded}}:&{{required}}
排除條件
只執行-l后的主機
ansible-playbook site.yml -l 192.168.77.129
ansible-playbook site.yml --l @retry_hosts.txt
更多文章請看 Ansible 專題文章總覽