如何使用 Azure 动态清单以及有条件的键控组执行 ansible-playbook
How to execute ansible-playbook with Azure Dynamic Inventories along with keyed groups conditional
我正在尝试在 ansible 中使用 azure_rm 插件在 Azure 平台上生成动态主机。使用键控组条件,我能够成功地使其与 ansible ad-hoc 命令一起工作。但是,当我尝试使用 "ansible-playbook" 传递相同内容时,它不起作用。任何人都可以帮助我如何以同样的方式 运行 ansible-playbook 吗?
下面是我的动态库存生成文件:
---
plugin: azure_rm
auth_source: msi
keyed_groups:
- prefix: tag
key: tags
当我使用该文件对目标VM 执行ping 操作时,以下是成功响应。
使用的命令:
ansible -m ping tag_my_devops_ansible_slave -i dynamic_inventory_azure_rm.yml
回复:
devops-eastus2-dev-ansibleslave-vm_2f44 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
但是,当我将其与 ansible-playbook 一起使用时,出现以下错误。
使用的命令:
ansible-playbook tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml
错误:
ansible-playbook: error: unrecognized arguments: test-playbook.yml
任何人都可以帮助解决如何为上述用例执行 ansible-playbook 吗?
ansible-playbook
命令不接受命令行上的目标列表,而是 playbook 文件将 hosts:
作为顶级键,指示该 playbook 将应用到的主机。
所以,如果该剧本总是要与该标签一起使用,您可以在剧本中指出:
- hosts: tag_cdo_devops_ansible_slave
tasks:
- debug: var=ansible_host
hosts:
似乎也支持 jinja2 模板,所以您可以通过以下方式实现您想要做的事情:
- hosts: '{{ azure_playbook_hosts }}'
tasks:
- debug: var=ansible_host
然后是ansible-playbook -e azure_playbook_hosts=tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml
或者您可以创建一个专用清单文件,其中只有 returns 台主机与您想要的标签相匹配,然后使用 -i
作为该清单以及剧本文件中的 hosts: all
。
我正在尝试在 ansible 中使用 azure_rm 插件在 Azure 平台上生成动态主机。使用键控组条件,我能够成功地使其与 ansible ad-hoc 命令一起工作。但是,当我尝试使用 "ansible-playbook" 传递相同内容时,它不起作用。任何人都可以帮助我如何以同样的方式 运行 ansible-playbook 吗?
下面是我的动态库存生成文件:
---
plugin: azure_rm
auth_source: msi
keyed_groups:
- prefix: tag
key: tags
当我使用该文件对目标VM 执行ping 操作时,以下是成功响应。
使用的命令:
ansible -m ping tag_my_devops_ansible_slave -i dynamic_inventory_azure_rm.yml
回复:
devops-eastus2-dev-ansibleslave-vm_2f44 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
但是,当我将其与 ansible-playbook 一起使用时,出现以下错误。 使用的命令:
ansible-playbook tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml
错误:
ansible-playbook: error: unrecognized arguments: test-playbook.yml
任何人都可以帮助解决如何为上述用例执行 ansible-playbook 吗?
ansible-playbook
命令不接受命令行上的目标列表,而是 playbook 文件将 hosts:
作为顶级键,指示该 playbook 将应用到的主机。
所以,如果该剧本总是要与该标签一起使用,您可以在剧本中指出:
- hosts: tag_cdo_devops_ansible_slave
tasks:
- debug: var=ansible_host
hosts:
似乎也支持 jinja2 模板,所以您可以通过以下方式实现您想要做的事情:
- hosts: '{{ azure_playbook_hosts }}'
tasks:
- debug: var=ansible_host
然后是ansible-playbook -e azure_playbook_hosts=tag_cdo_devops_ansible_slave -i dynamic_inventory_azure_rm.yml test-playbook.yml
或者您可以创建一个专用清单文件,其中只有 returns 台主机与您想要的标签相匹配,然后使用 -i
作为该清单以及剧本文件中的 hosts: all
。