provision method commands change auth vagrant parameter-passing provisioning

method - vagrant ssh config



Pasando la variable a un provisionador de shell shell en vagrant (6)

Aquí hay una forma alternativa de pasar las variables del entorno:

config.vm.provision "shell" do |s| s.binary = true # Replace Windows line endings with Unix line endings. s.inline = %Q(/usr/bin/env / TRACE=#{ENV[''TRACE'']} / VERBOSE=#{ENV[''VERBOSE'']} / FORCE=#{ENV[''FORCE'']} / bash my_script.sh) end

Ejemplo de uso:

TRACE=1 VERBOSE=1 vagrant up

Estoy usando un script de shell simple para aprovisionar software para una configuración errática como se ve here .

Pero no puedo encontrar una manera de tomar los argumentos de línea de comando pasados ​​a vagrant y enviarlos a un script de shell externo. Google revela que esto se agregó como una característica, pero no puedo encontrar ninguna documentación que lo cubra o ejemplos por ahí.


De hecho, no funciona con variables! El snytax correcto es:

var1= "192.168.50.4" var2 = "my_server" config.vm.provision :shell, :path => ''setup.sh'', :args => [var1, var2]

y luego, en el shell setup.sh:

echo "### $1 - $2" > ### 192.168.50.4 - my_server


En nuevas versiones puedes usar array:

config.vm.provision :shell, :path => "bootstrap.sh", :args:["first", "second"]


Para agregar argumentos explícitos, usé esto con éxito:

config.vm.provision "shell", path: "provision.sh", :args => "--arg1 somearg --arg2 anotherarg"


Respondiendo a mi propia pregunta en función de alguna información que encontré en una versión anterior de la página de documentos :

config.vm.provision :shell, :path => "bootstrap.sh", :args => "''abc''"

- @ usuario1391445


Estás en lo correcto. La forma de pasar argumentos es con el parámetro :args .

config.vm.provision :shell, :path => "bootstrap.sh", :args => "''first arg'' second"

Tenga en cuenta que las comillas simples alrededor del first arg argumento solo son necesarias si desea incluir espacios como parte del argumento pasado. Es decir, el código anterior es equivalente a escribir lo siguiente en el terminal:

$ bootstrap.sh ''first arg'' second

Donde dentro del script, $ 1 se refiere a la cadena "first arg" y $ 2 se refiere a la cadena "second".

Los documentos v2 sobre esto se pueden encontrar aquí: here