Vagrant Inline run триггеры не распознают перенаправление ввода-вывода - PullRequest
0 голосов
/ 11 февраля 2019

Не знаю почему, но 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.

После некоторого исследования я выяснил,что перенаправление ввода / вывода не работает с параметром оболочки inline, работает параметр оболочки path, но я не хочу создавать файл для этой простой команды.

1 Ответ

0 голосов
/ 22 февраля 2019

Оказывается опция run выполняет подпроцесс оболочки, я должен запустить скрипт в сеансе 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
...