向仅接受文件的bash命令提供环境变量

时间:2018-11-29 10:52:05

标签: linux bash scripting

我正在尝试使用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命令,使得该命令将其视为文件,但不会创建文件?

1 个答案:

答案 0 :(得分:2)

您可以尝试进行流程替换:

ansible-vault encrypt --vault-password-file=<(echo "${ANSIBLE_VAULT_PASSWORD}") --output=encrypted_file.yml decrypted_file.yml
相关问题