para official library curso boxes configuration vagrant virtualbox vagrantfile

configuration - official - ¿Cómo cambiar el nombre de máquina ''predeterminado'' de Vagrant?



vagrant official website (7)

En caso de que haya muchas personas utilizando su archivo errante, es posible que desee establecer el nombre dinámicamente . A continuación se muestra el ejemplo de cómo hacerlo utilizando el nombre de usuario de su máquina HOST como el nombre de la casilla y el nombre de host:

require ''etc'' vagrant_name = "yourProjectName-" + Etc.getlogin Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.vm.hostname = vagrant_name config.vm.provider "virtualbox" do |v| v.name = vagrant_name end end

¿De dónde viene el nombre ''predeterminado'' cuando se lanza una caja errante?

$ vagrant up Bringing machine ''default'' up with ''virtualbox'' provider...

¿Hay una manera de configurar esto?


Encontré las opciones múltiples confusas, así que decidí probarlas todas para ver exactamente lo que hacen.

Estoy usando VirtualBox 4.2.16-r86992 y Vagrant 1.3.3.

nametest un directorio llamado nametest y corrí

vagrant init precise64 http://files.vagrantup.com/precise64.box

para generar un Vagrantfile por defecto. Luego abrí la GUI de VirtualBox para poder ver los nombres de los cuadros que creo.

  1. Predeterminado Vagrantfile

    Vagrant.configure(''2'') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" end

    Nombre de la GUI de VirtualBox: "nametest_default_1386347922"

    Comentarios: El nombre predeterminado es el formato DIRECTORY_default_TIMESTAMP.

  2. Definir VM

    Vagrant.configure(''2'') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.define "foohost" end

    Nombre de la GUI de VirtualBox: "nametest_foohost_1386347922"

    Comentarios: si define explícitamente una máquina virtual, el nombre utilizado reemplaza el token ''predeterminado''. Este es el nombre de las salidas errantes en la consola. Simplificación basada en la zook de zook (comentarista).

  3. Establecer el nombre del proveedor

    Vagrant.configure(''2'') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.provider :virtualbox do |vb| vb.name = "foohost" end end

    Nombre de la GUI de VirtualBox: "foohost"

    Comentarios: Si establece el atributo de name en un bloque de configuración del proveedor, ese nombre se convertirá en el nombre completo que se muestra en la GUI de VirtualBox.

    Ejemplo combinado: definir VM y establecer el nombre del proveedor

    Vagrant.configure(''2'') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.define "foohost" config.vm.provider :virtualbox do |vb| vb.name = "barhost" end end

    Nombre de la GUI de VirtualBox: "barhost"

    Comentarios: Si usa ambos métodos al mismo tiempo, el valor asignado al name en el bloque de configuración del proveedor gana. Simplificación basada en la zook de zook (comentarista).

  4. Establecer hostname (BONUS)

    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.hostname = "buzbar" end

    Comentarios: Esto establece el nombre de host dentro de la VM. Esta sería la salida del comando de hostname de hostname en la máquina virtual y también esto es lo que se ve en el indicador de comandos como vagrant@<hostname> , aquí se verá como vagrant@buzbar

Código Final

Vagrant.configure(''2'') do |config| config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.hostname = "buzbar" config.vm.define "foohost" config.vm.provider :virtualbox do |vb| vb.name = "barhost" end end

Así que ahí está. Ahora sabes 3 opciones diferentes que puedes configurar y los efectos que tienen. Supongo que es una cuestión de preferencia en este punto? (Soy nuevo en Vagrant, así que todavía no puedo hablar de las mejores prácticas).


Especifico el nombre definiendo dentro de VagrantFile y también especifico el nombre de host, así que disfruto viendo el nombre de mi proyecto mientras ejecuto comandos de Linux independientemente del sistema operativo de mi dispositivo. ✌️

config.vm.define "abc" config.vm.hostname = "abc"


Esta es la forma en que he asignado nombres a máquinas virtuales individuales. Cambie YOURNAMEHERE a su nombre deseado.

Contenido de Vagrantfile:

Vagrant.configure("2") do |config| # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "precise32" # The url from where the ''config.vm.box'' box will be fetched if it # doesn''t already exist on the user''s system. config.vm.box_url = "http://files.vagrantup.com/precise32.box" config.vm.define :YOURNAMEHERE do |t| end end

Salida de terminal:

$ vagrant status Current machine states: YOURNAMEHERE not created (virtualbox)


Puede cambiar el nombre de la máquina predeterminada config.vm.define cambiando el valor de config.vm.define .

Aquí está el simple Vagrantfile que usa getopts y le permite cambiar el nombre dinámicamente:

# -*- mode: ruby -*- require ''getoptlong'' opts = GetoptLong.new( [ ''--vm-name'', GetoptLong::OPTIONAL_ARGUMENT ], ) vm_name = ENV[''VM_NAME''] || ''default'' begin opts.each do |opt, arg| case opt when ''--vm-name'' vm_name = arg end end rescue end Vagrant.configure(2) do |config| config.vm.define vm_name config.vm.provider "virtualbox" do |vbox, override| override.vm.box = "ubuntu/wily64" # ... end # ... end

Entonces, para usar un nombre diferente, puedes correr por ejemplo:

vagrant --vm-name=my_name up --no-provision

Nota: El parámetro --vm-name debe especificarse antes del comando up .

o:

VM_NAME=my_name vagrant up --no-provision


Sí, para el proveedor de Virtualbox hacer algo como esto:

Vagrant.configure("2") do |config| # ...other options... config.vm.provider "virtualbox" do |p| p.name = "something-else" end end


Si desea cambiar cualquier otra cosa en lugar de "predeterminado", simplemente agregue estas líneas adicionales a su Vagrantfile:

Cambie el nombre de la caja base, cuando use "estado errante"

config.vm.define "tendo" do |tendo| end

Donde "tendo" será el nombre que aparecerá en lugar del predeterminado