Ansible
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 而不按輸入鍵。然後我獲取該命令的輸出並用它替換變數定義。
我的 tasks/main.yml 文件最終是這樣的
$$ redacted $$
--- - 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
我似乎找到了解決我自己問題的方法:
在 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