Ansible之路——第六章:通配模式Patterns
在Ansible 中,Patterns 意味着要管理哪些机器,在playbooks 中,意味着哪些主机需要应用特定的配置或者过程。
6.1 命令格式:
ansible <pattern_goes_here> -m <module_name> -a <arguments>
比如我们的主机列表配置为:
则有命令:
ansible nova -m ping
模式通常用主机组来表示,上面的命令就代表针对nova 组的所有主机。
注:ansible不能操作没有在Inventory中定义过的主机。
6.2 全量匹配:
说明:匹配所有主机,all或者*号,两个功能相同,只是*号需要使用引号引起来(单双引号都可以)。
// 匹配所有主机
ansible all -m ping ansible "*" -m ping
// 匹配某个网段
1 | ansible 10.152.35.* -m ping |
6.3 逻辑或(or)匹配
如希望对多个主机或者多个组进行执行,组名之间通过冒号隔开,表示“OR”的意思,意思是这两个组中的所有主机
ansible nova:ironic -m ping
6.4 逻辑非(!)匹配
主要针对多重条件的匹配规则。
//所有在nova里面的机器,但不在compute里面的机器被匹配到。需要使用单引号。
ansible 'nova:!compute' -m ping
不使用引号或者使用双引号会报错。
6.5 逻辑与(&)匹配
针对多重条件的匹配。
//nova和compute组中同时存在的机器。(单双引号都可以)
ansible 'nova:&compute' -m ping
6.6 组合匹配
//nova组和ironic组中的所有机器,同时在bm组中存在,但不在compute组中。
6.7 模糊匹配
*通配符表示0个或者多个任意字符,主要用于一些模糊匹配。
//所有以192.168开头的主机
ansible 192.168.* -m ping
6.8 域切割或者索引
Ansible底层基于Python,因此也支持域切割,eg:
也可以指定组中特定范围的主机,[x-y]这种形式已经不推荐使用了,推荐使用[x:y]。
6.9正则匹配
//以~开始表示正则匹配。
~(nova|ironic).*\.example\.com (需要单或双引号)
如:
检测以192.168开头的主机
ansible ~192\.168\.[0-9]\.[0-9]\{\2} -m ping
6.10 指定主机执行
在/usr/bin/ansible 和/usr/bin/ansible-playbook 中,还可以通过一个参数”--limit”来明确指定某些主机或组。
从Ansible1.2 开始,如果想要指定一个文件中的主机可以使用”@”,这样只操作该文件中的主机。如果指定多个文件,则用逗号分隔:
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法