Ansible-vault 内联加密字符串引发错误

Ansible-vault 内联加密字符串引发错误

我在使用 Ansible/Ansible-vault 中的内联加密字符串时遇到了问题。

我将 Ansible Vault 密码存储在一个文件中,并有一个声明它的本地配置文件:

[defaults]
vault_password_file = ./my_vault_pass

由于我已经定义了 vault_password_file,因此我使用以下命令创建加密变量:

ansible-vault encrypt_string --stdin-name 'username'

出现提示时,我输入要加密的值,然后按两次 CTRL-D,但不按回车键。然后我获取该命令的输出并用它替换变量定义。

我的 task/main.yml 文件最终像这样[删除]

---
- name: Clone the template
  vmware_guest:
    hostname: 1.2.3.4
    username: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          63353665383934386565306639633734366666303465306364323761323938383433643133313933
          3939356663626465303465646265653731626463386261610a306361343436613030336639303533
          64613337326332353933313931303537653833623863343435623730316266643636373831363937
          6231643937376665620a326465343239643237366465353965376532336365346631653466623038
          35636135303233623733306632333833663535646230393335303261633535353636
    password: 'my_password'
    validate_certs: False
    name: testvm_2
    template: 'template-name'
    datacenter: DC1
    folder: /Test
    state: poweredon
    wait_for_ip_address: yes

但是,由于该username:更改是唯一的更改,我现在收到一个错误:

PLAY [localhost] *************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************
ok: [localhost]

TASK [common : Clone the template] *******************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "Unable to pass options to module, they must be JSON serializable: Object of type AnsibleVaultEncryptedUnicode is not JSON serializable"}

PLAY RECAP *******************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

答案1

我似乎找到了我自己的问题的答案:

在 Ansible 中似乎无法加密模块变量。一种解决方法是使用 Jinja 语法将变量间接到 vars.yml 文件中,该语法在提示与技巧

IE

任务.yml

    password: '{{ vault_password }}'

然后在 vars.yml 中(我使用 vars/main.yml,因为我正在使用最佳实践用于目录布局。

vault_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          30373438353463646433363433616631616434616237636432653530353330636236666332363661
          6565323338643139623737646431333332383432613962640a636537306139646539303762646166
          61363435643137363738656235613330663131613333656538323035666261336334383138663965
          6365356130346537300a363961623261653030363433353737386666306131336631343633396262
          6565

相关内容