Ansible 小手册系列 六(Patterns 匹配模式)
Patterns 是定义Ansible要管理的主机。但是在playbook中它指的是对应主机应用特定的配置或IT流程。
命令格式
1 2 3 4 5 6 7 | 命令行 ansible <host-pattern> [options] playbook 中 - hosts: <host-pattern> |
使用示例
1 | ansible \* -m service -a "name=httpd state=restarted" |
Patterns 使用
匹配所有的主机
1 2 | all * # 命令行中使用 \进行转义<br>以上两个Patterns 均表示匹配所有的主机 |
精确匹配
1 | 192.168.77.121<br>以上Patterns 表示只匹配192.168.77.121这一个主机 |
或匹配
1 2 | web:db 以上Patterns 表示匹配的主机在web组或db组中 |
非模式匹配
1 2 | "web:\!db" 命令下需转义特殊符号,以上Patterns 表示匹配的主机在web组,不在db组中,包含在web组,又在db中的用户 |
交集匹配
1 2 | "web:&db" 以上Patterns 表示匹配的主机同时在db组和dbservers组中 |
通配符匹配
1 2 3 4 | web-*.com:dbserver webserver[0] webserver[0:25] *表示所有字符,[0]表示组第一个成员,[0:25] 表示组第1个到第24个成员,类似python中得切片 |
正则表达式匹配
1 2 | ~(web|db).*\.example\.com 在开头的地方使用“~”,表示这是一个正则表达式 |
组合匹配
1 2 | "webservers:dbservers:&staging:!phoenix" 在webservers 或者dbservers 组中,必须还存在于staging 组中,但是不在phoenix 组中 |
在ansible-palybook 命令中,你也可以使用变量来组成这样的表达式,但是你必须使用“-e”的选项来指定这个表达式
1 | webservers:!{{excluded}}:&{{required}} |
排除条件
1 2 3 | 只执行-l后的主机 ansible-playbook site.yml -l 192.168.77.129 ansible-playbook site.yml --l @retry_hosts.txt |
生活不会突变,你要做的只是耐心和积累。人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。你的时间有限,做喜欢的事情会令人愉悦,所以跟随自己的本心。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步