在Vagrant中,如何仅在实际配置时填充配置环境变量?
我正在设置一个文件,该文件需要在资源调配期间将密钥放入来宾。密钥是GPG加密的,我想在环境变量中将其传递给配置脚本。我已经编写了一个Ruby方法(在Vagrant中,如何仅在实际配置时填充配置环境变量?,vagrant,vagrantfile,Vagrant,Vagrantfile,我正在设置一个文件,该文件需要在资源调配期间将密钥放入来宾。密钥是GPG加密的,我想在环境变量中将其传递给配置脚本。我已经编写了一个Ruby方法(get\u secret\u key)来解密它。但是在Vagrant的shell provisioner的env选项中使用此选项会导致在每次运行Vagrant时调用get\u secret\u key,而不仅仅是在设置时 调用get\u secret\u key可能会提示输入我的密码短语,因此我希望避免不必要地调用它。例如,在运行vagrant ssh
get\u secret\u key
)来解密它。但是在Vagrant的shell provisioner的env
选项中使用此选项会导致在每次运行Vagrant时调用get\u secret\u key
,而不仅仅是在设置时
调用get\u secret\u key
可能会提示输入我的密码短语,因此我希望避免不必要地调用它。例如,在运行vagrant ssh
时
这是我的vagrant文件
的缩写版本:
def get_secret_key()
# code that returns a string
end
Vagrant.configure("2") do |config|
config.vm.box = "debian/buster64"
config.vm.provision "shell",
env: {"secret_key" => get_secret_key()},
inline: "echo $secret_key > /tmp/secret_key"
end
正如我提到的,这非常有效,但我只想在实际设置时调用get\u secret\u key