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
- Esto solía parecer ser una característica no documentada que solo era visible en el código fuente .
- En versiones posteriores, ahora está documentado en los documentos de Hashicorp aquí: Variables ambientales .
¿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.