Ansible 2.9使用import_playbook导入剧本时如何指定hosts
Ansible 2.9 中
import_playbook 指定 hosts 参数的解决方案 你当前的写法中直接在import_playbook同层级添加hosts: atlanta的配置是无效的。import_playbook为静态导入指令,本身不支持直接覆写被导入playbook的hosts字段,需要通过变量传递的方式实现需求,具体操作方案如下:
- 方案1:修改被导入playbook,通过变量传递hosts值
第一步先修改/test/pb0.yml中的play级hosts配置,替换为变量形式:
第二步修改主playbook--- - name: 被导入的play任务 hosts: "{{ target_hosts | default('all') }}" # 未传值时默认匹配all分组 tasks: # 原有任务保持不变/project/first_pb.yml的导入配置,通过vars参数传递目标hosts:- import_playbook: /test/pb0.yml vars: target_hosts: atlanta - 方案2:无需修改被导入playbook,执行时通过limit参数限定目标主机
如果你不方便修改/test/pb0.yml的原有配置,可以在执行主playbook时添加--limit参数,仅将任务限定在atlanta分组执行:
注意该方案会限制整个主playbook运行过程中所有任务的目标主机,适合所有导入playbook都要在同一分组执行的场景。ansible-playbook /project/first_pb.yml --limit atlanta
内容的提问来源于stack exchange,提问作者CH06
相关产品推荐
相关产品推荐

