我正在尝试使用ansible-vault
编写脚本,以在基于Linux的系统上加密文件。在这种情况下,我有一个ansible-vault
密码用于存储为环境变量的加密,我需要使用该密码来加密文件。ansible-vault
命令可以通过两种方式接受密码。一种要求手动输入密码(请参阅:--ask-vault-pass
),另一种则允许您将密码保存在文件中并使用它(请参阅:--vault-password-file
)。 --ask-vault-pass
命令在这种情况下不起作用,因为我想避免不得不要求用户输入。
我希望使用--vault-password-file
来实现这一目标。现在我的代码是:
echo ${ANSIBLE_VAULT_PASSWORD} > .ansible_vault_temp
ansible-vault encrypt --vault-password-file=.ansible_vault_temp --output=encrypted_file.yml decrypted_file.yml
rm .ansible_vault_temp
但是,我不喜欢在两个不同的行上创建文件并将其删除。是否有可能将
${ANSIBLE_VAULT_PASSWORD}
传递给ansible-vault
命令,使该命令将其视为文件,但不会创建文件? 最佳答案
您可以尝试进行流程替换:
ansible-vault encrypt --vault-password-file=<(echo "${ANSIBLE_VAULT_PASSWORD}") --output=encrypted_file.yml decrypted_file.yml
关于linux - 向仅接受文件的bash命令提供环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53537345/