如何通过命令行将 Azure 服务主体详细信息传递给 Ansible?

How to pass Azure service principal details to Ansible via command-line?

通过将我的服务原则详细信息放入存储在 ~/.azure/credentials

中的凭据文件,我能够使用 Ansible 连接到 Azure

这对开​​发来说没问题,现在(在生产中)我想不再使用文本凭据文件,而是通过参数通过命令行将凭据传递给 Ansible。

这应该怎么做? 感谢任何帮助 - 谢谢

我试过:

ansible-playbook -i ./dev-env/epazure_rm.yml ./dev-env/site.yml -vvvv -u adminuser --extra-vars "AZURE_SUBSCRIPTION_ID=XXX AZURE_CLIENT_ID=XXX AZURE_SECRET=XXX AZURE_TENANT=XXX"

我的 Azure 动态清单插件文件如下所示

    --- 
plugin: azure_rm
include_vm_resource_groups: 
  - rg-devdonal-eastus01
auth_source: auto
subscription_id: "{{ AZURE_SUBSCRIPTION_ID }}"
client_id: "{{ AZURE_CLIENT_ID }}"
secret: "{{ AZURE_SECRET }}"
tenant: "{{ AZURE_TENANT }}"

keyed_groups:
- prefix: tag
  key: tags

你可以用environment variables for the credential and then read the variables from the environment, here就是例子:

- debug: msg="{{ lookup('env','HOME') }} is an environment variable"

另外还有一个issue例子。