如何在我易理解的剧本中引用AWX凭据



我是ansible的新手。我试图使用现有的战术手册,但将其部署到具有单独凭据的不同Azure帐户,但我遇到了一些问题。我通过AWX门户创建了一个新的凭据,其中包含我的client_id、tenant_id、subscription_id和secret,但我不知道如何让我的剧本提取这个凭据,而不是它当前使用的凭据。

我的剧本身份验证角色像一样进行身份验证

- name: 'Authenticating against Azure'
command: >
az login --service-principal
-u '{{ vault_azure_client_id }}'
-p '{{ vault_azure_client_secret }}'
-t '{{ vault_azure_tenant_id }}' 

然后是一个秘密文件夹,其中包含一个看起来像加密字符串的vault文件,并以下面的开始

$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 }}'

我如何编辑主文件和角色,以指向通过控制台创建的信誉,而不是存储在ansible vault中的信誉?

这是因为默认情况下,您的剧本文件会从vault文件中获取凭据。指向要获取凭据的主文件,而不是默认文件(Vault文件(。

变量可以来自不同的来源,例如剧本文件本身或剧本中导入的外部变量文件。使用定义同名变量的多个变量源时,将应用特殊的优先级规则。

建议1:如果您在剧本文件本身中使用变量,您可以像这样传递使用该变量。

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剧本

--extra-vars or -e option while running the Ansible playbook, as seen below.
#ansible-playbook myplaybook.yaml --extra-vars "nodes=webgroup”

您可以引用此Document从外部传递变量。

假设您的"vault文件";在您的";机密文件夹";看起来像这样:

vault_azure_client_id: foo
vault_azure_client_secret: bar
vault_azure_tenant_id : baz

你有两个选择:

  • 停止使用此文件并在AWX中配置这些变量。您没有在AWX中将这些变量定义为凭据,您需要在调用剧本的作业模板中定义它们
  • 重写您的";vault文件";将您的秘密变量内联。例如:
vault_azure_client_id: !vault |
$ANSIBLE_VAULT;1.2;AES256;dev
30613...
vault_azure_client_secret: !vault |
$ANSIBLE_VAULT;1.2;AES256;dev
30613...
vault_azure_tenant_id : !vault |
$ANSIBLE_VAULT;1.2;AES256;dev
30613...

AWX的限制是不能解密加密文件中的变量,但它可以解密内联加密的变量。

最新更新