有 2 个主机 my_host1、my_host2 此代码适用于 my_host1,我还需要为 my_host2 运行它是否可以在 ansible main.yml 任务中覆盖主机值,而无需更改 init playbook.yml 中的字符串“hosts:my_host1”?命令行 --extra-vars 对我来说不是解决方案。
谢谢
---
#init playbook.yml
- name: run role test
hosts: my_host1
roles:
- role: test_1
---
#main.yml in role test_1
- name: Run tasks from example.yml
block:
- include_tasks: example.yml
---
# example.yml
- debug:
msg: "This is example task"
答案1
--extra-vars
无论如何都不起作用,因为 hosts 定义不是一个变量。
通常,如果剧本中没有明确定义,您可以通过参数添加想要运行剧本的主机--limit
。
# playbook.yml
- name: run role test
hosts: all
然后执行:
ansible-playbook playbook.yaml --limit my_host1,myhost2
或者你提供一个在清单中定义的组
[my_hosts]
my_host1
my_host2
称呼:
ansible-playbook playbook.yaml --limit my_hosts
答案2
您应该简单地编写一个带有 [计算机] 块的库存文件,然后设置您的主机:计算机。
您的剧本将应用于您库存中的每个主机。这是 Ansible 用途的基础。
https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html