!vault |
前缀对某些变量进行加密,而不是将变量和密钥放入Vault文件中并对其进行完全加密。notsecret: myvalue
mysecret: !vault |
$ANSIBLE_VAULT;1.1;AES256
66386439653236336462626566653063336164663966303231363934653561363964363833313662
6431626536303530376336343832656537303632313433360a626438346336353331386135323734
62656361653630373231613662633962316233633936396165386439616533353965373339616234
3430613539666330390a313736323265656432366236633330313963326365653937323833366536
34623731376664623134383463316265643436343438623266623965636363326136
other_plain_text: othervalue
当前结构如下:
ansible/group_vars/testing/vars
ansible/group_vars/testing/vault
将加密变量从Vault移动到vars目录时,运行
ansible-vault decrypt ansible/group_vars/testing/vars
会返回:ERROR! input is not vault encrypted data for ansible/group_vars/testing/vars
使用提供的Vault密钥解密该Vault变量,并将
用作普通变量。 ansible-vault命令行支持
stdin和stdout即时加密数据,可以从您最喜欢的编辑器中使用它们
创建这些Vaulted变量。您只需
必须确保添加!vault标记,以便Ansible和YAML都
意识到需要解密。 |由于Vault加密会产生多行字符串,因此也是必需的。
问题
应该将变量设置为加密,使用命令行一一加密
?
重新构造Ansible旧结构的最佳做法是什么?例如。删除保管库文件并将所有
已加密的vars放入vars文件中?
#1 楼
最近,我与ansible Vault进行了相当多的合作(特别是关于加密内容以及如何在不使代码不可读的情况下加密那些东西),我发现在2.3中改变我的习惯的动机很小。如果我要使用一系列加密的变量或文件,请将它们分开(我给它们加上
vault_
前缀),然后将其保留在那。我已经使用了几次!保管库功能,但让我非常惊讶,因为仅是非常明确地了解秘密文件中的内容是什么,这似乎比较容易。这样,没有人可以编辑我的剧本来假设什么是敏感数据,哪些不是敏感数据。
#2 楼
我决定删除ansible/group_vars/testing
目录,并将其替换为一个文件,即包含加密的var的文件ansible/group_vars/testing
:mysecret: !vault |
$ANSIBLE_VAULT;1.1;AES256
66386439653236336462626566653063336164663966303231363934653561363964363833313662
6431626536303530376336343832656537303632313433360a626438346336353331386135323734
62656361653630373231613662633962316233633936396165386439616533353965373339616234
3430613539666330390a313736323265656432366236633330313963326365653937323833366536
34623731376664623134383463316265643436343438623266623965636363326136
而不是运行
ansible-vault edit ansible/group_vars/testing/vault
,可以使用管道传递值需要加密到ansible-Vault,即printf mysecret | ansible-vault encrypt
。后者将对mysecret
进行加密,并且可以将输出添加到ansible/group_vars/testing
文件中。如果将ansible-playbook
运行,则如果指定了ansVault文件,则加密的变量将被解密。如果需要调试加密的值,则可以使用以下代码:
- debug: msg="Decrypted value: {{ encrypted_var }}"