Vagrant内联运行触发器无法识别IO重定向

问题描述 投票:0回答:1

我不知道为什么,但Vagrant似乎没有从其自动生成的私钥创建公钥。所以我试图在up命令之后创建它:

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/bionic64"

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--cpus", 1]
    vb.customize ["modifyvm", :id, "--memory", 512]
  end

  config.trigger.after :up do |trigger|
    vagrant_priv_key = ".vagrant/machines/default/virtualbox/private_key"
    trigger.run = {
      inline: "ssh-keygen -y -f #{vagrant_priv_key} > #{vagrant_priv_key}.pub"
    }
  end
end

上面运行Vagrantfile失败:

  ...
  default: Too many arguments.
==> default: Trigger run failed
==> default: A script exited with an unacceptable exit code 1.

经过一番调查后,我发现I / O重定向不适用于inline shell设置,使用path shell设置有效,但我不想为这个简单的命令创建一个文件。

vagrant vagrantfile
1个回答
0
投票

Turns out run选项执行shell子进程,我应该在bash会话中运行脚本:

config.trigger.after :up do |trigger|
    vagrant_priv_key = ".vagrant/machines/default/virtualbox/private_key"
    trigger.run = {
      inline: "/bin/bash -c 'ssh-keygen -y -f #{vagrant_priv_key} > #{vagrant_priv_key}.pub'"
    }
end
© www.soinside.com 2019 - 2024. All rights reserved.