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.
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.
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
dezook
(comentarista).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 lazook
dezook
(comentarista).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
dehostname
en la máquina virtual y también esto es lo que se ve en el indicador de comandos comovagrant@<hostname>
, aquí se verá comovagrant@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