Vagrant Inline 运行 触发器无法识别 IO 重定向
Vagrant Inline run triggers don't recognize IO redirection
我不知道为什么,但 Vagrant 似乎没有从其自动生成的私钥创建 public 密钥。所以我尝试在 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 设置有效,但我不想为这个简单的命令创建文件。
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
我不知道为什么,但 Vagrant 似乎没有从其自动生成的私钥创建 public 密钥。所以我尝试在 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 设置有效,但我不想为这个简单的命令创建文件。
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