ver una ruta relativa entre diferencia cómo copiar construye completa como carpeta archivo acceso absoluta ruby plugins development-environment provisioning vagrant

ruby - una - Especifique explicity de ruta de archivo Vagrant, si no plugin



diferencia entre ruta absoluta y ruta relativa (5)

Además de la respuesta de Andrew Lorente, también puede usar la variable de entorno VAGRANT_VAGRANTFILE para especificar la ruta del Vagrantfile . Esto tiene la ventaja sobre VAGRANT_CWD de no cambiar el directorio de trabajo actual que puede ser útil cuando se depende de rutas relativas.

Por ejemplo, lo siguiente se ejecutará vagrant up en Vagrantfile.other :

VAGRANT_VAGRANTFILE=Vagrantfile.other vagrant up

Notas

¿Hay alguna forma de especificar explícitamente la ruta de un Vagrantfile? Mi empresa quiere hacer algo como esto: para probar en una máquina de confluencia, escriba un comando como vagrant spinup confluence , y luego apúntelo a un archivo Vagrant en un directorio diferente que contenga el entorno de confluencia, y luego muestra todas estas máquinas.

Sin embargo, no parece que haya ninguna forma de indicar explícitamente qué archivo Vagrant usar, y soy algo (muy) nuevo en ruby, así que me cuesta escribir mi propio plugin para él. ¿Alguien tiene recomendaciones sobre qué hacer? ¿O alguien ha hecho algo similar a esto?


Mientras que otros respondedores son correctos en cuanto a que este caso en particular no necesitaba archivos Vagrant separados, creo que hay usos legítimos para especificar una ruta Vagrantfile, por ejemplo, leer información vagrant ssh-config en un script.

Afortunadamente, puede hacerlo configurando la variable de entorno VAGRANT_CWD :

VAGRANT_CWD=~/some/path/ vagrant ssh-config

Esto no parece estar documentado en ninguna parte, pero puede verlo en la fuente .


No es necesario tener un Vagrantfile por separado, solo puede definir varias máquinas virtuales en el mismo archivo. Consulte la documentación aquí: http://docs.vagrantup.com/v2/multi-machine/index.html

Si solo está usando una máquina virtual en su entorno "normal" y una máquina virtual para su entorno de "confluencia", entonces es simplemente un caso de simplemente definir cada máquina virtual y máquina vagrant up la máquina virtual específica.

Si tiene varias máquinas que componen cada uno de sus entornos, entonces tiene dos opciones, puede usar expresiones regulares y asegurarse de nombrar y escribir los comandos correctamente o puede poner un poco de lógica en su Vagrantfile para que sea más fácil para las personas .

Por ejemplo, con un poco de hack en su Vagrantfile puede hacer lo siguiente:

Vagrant.configure(''2'') do |config| if ARGV[1] == ''confluence'' ARGV.delete_at(1) confluence = true else confluence = false end config.vm.provider :virtualbox do |virtualbox, override| #virtualbox.gui = true virtualbox.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] virtualbox.customize ["modifyvm", :id, "--memory", 512] override.vm.box = ''Ubuntu 12.10 x64 Server'' override.vm.box_url = ''http://goo.gl/wxdwM'' end if confluence == false config.vm.define :normal1 do |normal1| normal1.vm.hostname = ''normal1'' normal1.vm.network :private_network, ip: "192.168.1.1" end config.vm.define :normal2 do |normal2| normal2.vm.hostname = ''normal2'' normal2.vm.network :private_network, ip: "192.168.1.2" end end if confluence == true config.vm.define :confluence1 do |confluence1| confluence1.vm.hostname = ''confluence1'' confluence1.vm.network :private_network, ip: "192.168.1.3" end config.vm.define :confluence2 do |confluence2| confluence2.vm.hostname = ''confluence2'' confluence2.vm.network :private_network, ip: "192.168.1.4" end end end

¡Ahora el vagrant up saca a la luz las vm''s normales y vagrant up confluence saca a relucir tu confluencia vm!


Poner comandos de shell entre paréntesis crea un subconjunto, por lo que desde Git para Windows (o bash en Linux / OS X), puede hacer:

(cd test/ruby; vagrant up)


Puede tener tantos Vagrantfile diferentes como quiera / necesite. Simplemente cree un nuevo directorio para su proyecto (que puede consistir en una o varias máquinas virtuales), luego cd en ese directorio y ejecute el vagrant init para hacer que Vagrant cree un nuevo Vagrantfile que luego se puede personalizar según sus necesidades. Para iniciar su máquina virtual utilizando ese nuevo Vagrantfile ejecute vagrant up desde dentro del directorio que lo contiene.