为只接受文件的bash命令提供一个环境变量



我正在尝试在基于Linux的系统上编写使用ansible-vault加密文件的脚本。在这种情况下,我有一个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

相关内容

最新更新