如何修改Ansible剧本或模板仅在特定Linux服务器执行任务
仅在Linux组内a、b前缀服务器执行Ansible任务的方案
有几种可行的实现方式,按需选择:
1. 修改Playbook的hosts参数
直接在playbook里精准指定目标主机,不用依赖外部Limit配置。把原来的hosts: all改成以下写法:
- name: 你的任务名称 hosts: "Linux:&(a*|b*)" tasks: - name: 示例任务(替换成你的实际任务) debug: msg: "仅在a/b前缀的Linux服务器运行"
这里的Linux:&(a*|b*)表示只选中Linux组里主机名以a或b开头的机器,精准匹配需求。如果你的环境里Linux组只有a、b、c三类前缀,也可以用hosts: Linux,!c*(排除c前缀的机器),效果一致。
2. 修改模板的Limit参数
如果不想改动playbook,保持hosts: all,直接修改模板里的Limit配置:
- 把原来的
Limit: Linux改成Limit: Linux:a*:b*,表示仅选中Linux组内主机名匹配a或b的机器 - 或者改成
Limit: Linux,!c*,排除Linux组里c前缀的机器,剩下的就是a、b前缀的目标机器
3. 给Inventory添加子组(适合长期复用)
如果这类筛选是日常常用需求,建议直接在DBone Inventory里创建子组,方便后续复用:
假设你的Inventory是ini格式,添加以下配置:
[Linux_a] a* [Linux_b] b* [Linux_ab:children] Linux_a Linux_b
之后不管是playbook里写hosts: Linux_ab,还是模板Limit设为Linux_ab,都能直接选中目标机器,维护起来更清晰。
内容的提问来源于stack exchange,提问作者Smily
相关产品推荐
相关产品推荐

