在Vagrant中,如何仅在实际配置时填充配置环境变量?

在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

我正在设置一个文件,该文件需要在资源调配期间将密钥放入来宾。密钥是GPG加密的,我想在环境变量中将其传递给配置脚本。我已经编写了一个Ruby方法(
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