Vagrantfile: присвоить результат встроенного сценария оболочки переменной

Я хотел бы назначить код выхода встроенного сценария оболочки в Vagrantfile переменной:

FOO = config.vm.provision "shell", 
env: {
  "FILE" => "/tmp/hello"
},
inline: <<-SHELL
  [ -f "$FILE" ]; echo $?
SHELL

а затем использовать его позже в моем Vagrantfile, например:

if FOO != 0
  ...

То, как я пробовал, явно не работает. Кто-нибудь здесь знает

  1. если это возможно и
  2. если да, то как?

person bellackn    schedule 06.11.2019    source источник
comment
Звуки, связанные с возвратом значения из сценария предоставления в vagrant   -  person oguz ismail    schedule 19.11.2019
comment
Да, поместить файл в /vagrant — это то, как я это сделал. Но все же мне интересно, возможно ли это, и я хотел бы прочитать некоторые ссылки.   -  person bellackn    schedule 19.11.2019


Ответы (2)


В итоге я использовал такой подход, как этот.

По ходу дела я обнаружил, что все условные выражения Ruby в Vagrantfile оцениваются в самом начале, хотя встроенные сценарии оболочки внутри этих условных выражений (если они есть) не оцениваются одновременно. Это привело к некоторому странному поведению, которого я мог бы избежать, делая то, что я сказал выше.

person bellackn    schedule 25.11.2019

Приземлившись здесь, я понял, что вы можете назначить вывод кода выхода команды, как в ruby:

FOO = `mycommand`
BAR = $?.exitstatus

Затем используйте его в Vagrantfile как любую другую переменную.

person fernandezcuesta    schedule 14.10.2020