首页 > 解决方案 > 为仅接受文件的 bash 命令提供环境变量

问题描述

我正在尝试编写脚本用于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

标签: linuxbashscripting

解决方案


您可以尝试进程替换:

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

推荐阅读