我是 ansible 新手。我正在尝试使用现有的 playbook,但将其部署到具有单独凭据的不同 Azure 帐户,但遇到了一些问题。我通过 AWX 门户使用 client_id、tenant_id、subscription_id 和 secret 创建了一个新凭证,但我不知道如何让我的 playbook 提取此凭证而不是当前使用的凭证。
我的剧本身份验证角色像这样进行身份验证
- name: 'Authenticating against Azure'
command: >
az login --service-principal
-u '{{ vault_azure_client_id }}'
-p '{{ vault_azure_client_secret }}'
-t '{{ vault_azure_tenant_id }}'
然后有一个包含保管库文件的 Secrets 文件夹,其中包含看起来像加密字符串的内容,并从以下内容开始
$ANSIBLE_VAULT;1.1
我的主文件声明如下变量
# Environment Variables
environment:
AZURE_CLIENT_ID: '{{ vault_azure_client_id }}'
AZURE_SECRET: '{{ vault_azure_client_secret }}'
AZURE_TENANT: '{{ vault_azure_tenant_id }}'
如何编辑主文件和角色以指向通过控制台创建的信用而不是存储在 ansibleVault 中的信用?
最佳答案
这是因为默认情况下您的 playbook 文件从保管库文件中获取凭据。指向您的主文件以获取凭据而不是默认文件(Vault 文件)。
变量可以来自不同的来源,例如 playbook 文件本身或在 playbook 中导入的外部变量文件。 Special precedence rules当使用定义同名变量的多个变量源时将适用。
建议 1:如果您在 playbook 文件本身中使用变量,则可以像这样使用变量。
vars:
- AZURE_CLIENT_ID: Client ID
- AZURE_SECRET: Client Secret Value
- AZURE_TENANT: Tenant ID
tasks:
- name: 'Authenticating against Azure'
command: >
az login --service-principal
-u '{{ AZURE_CLIENT_ID}}'
-p '{{ AZURE_SECRET }}'
-t '{{ AZURE_TENANT}}'
引用:https://www.digitalocean.com/community/tutorials/how-to-use-variables-in-ansible-playbooks
建议 2:您还可以使用以下方法将额外的变量传递给 Ansible playbook
--extra-vars or -e option while running the Ansible playbook, as seen below.
#ansible-playbook myplaybook.yaml --extra-vars "nodes=webgroup”
可以引用这个Document从外部传递变量。
关于azure - 如何在我的 ansible playbook 中引用 AWX 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71570873/