¿De dónde viene el nombre 'predeterminado' cuando se inicia un cuadro vagabundo?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
¿Hay alguna manera de configurar esto?
¿De dónde viene el nombre 'predeterminado' cuando se inicia un cuadro vagabundo?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
¿Hay alguna manera de configurar esto?
Respuestas:
Encontré las múltiples opciones confusas, así que decidí probarlas todas para ver exactamente lo que hacen.
Estoy usando VirtualBox 4.2.16-r86992 y Vagrant 1.3.3.
Creé un directorio llamado nametest
y ejecuté
vagrant init precise64 http://files.vagrantup.com/precise64.box
para generar un Vagrantfile predeterminado. Luego abrí la GUI de VirtualBox para poder ver qué nombres aparecerían en los cuadros que creo.
Archivo Vagrant predeterminado
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 VM, el nombre utilizado reemplaza el token 'predeterminado'. Este es el nombre de las salidas vagabundas en la consola. Simplificación basada en zook
la entrada de (comentarista)
Establecer nombre de 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 name
atributo 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 nombre de 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, name
gana el valor asignado en el bloque de configuración del proveedor. Simplificación basada en zook
la entrada de (comentarista)
Conjunto hostname
(BONIFICACIÓN)
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 hostname
comando en la VM y también esto es lo que es visible en el indicador vagrant@<hostname>
, aquí se verá comovagrant@buzbar
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
Entonces ahí está. Ahora conoce 3 opciones diferentes que puede configurar y los efectos que tienen. Supongo que es una cuestión de preferencia en este momento? (Soy nuevo en Vagrant, por lo que todavía no puedo hablar sobre las mejores prácticas).
VBoxManage list vms
en la línea de comandos.
define VM
nombre del método se usa en Vagrant stdout y registros, mientras que el set provider name
nombre se usa para administrar el cuadro con el proveedor. Entonces ambos son relevantes.
do... end
bloque si está vacío. config.vm.define "foohost"
funciona bien
Bringing machine 'default' up with 'virtualbox' provider...
cuando se ejecutavagrant up
Esta es la forma en que he asignado nombres a máquinas virtuales individuales. Cambia YOURNAMEHERE
a tu 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
Terminal de salida:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
funciona también.
config.vm.define YOURNAMEHERE do |t| end
Si desea cambiar algo más en lugar de 'predeterminado', simplemente agregue estas líneas adicionales a su Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Donde "tendo" será el nombre que aparecerá en lugar del predeterminado
Especifico el nombre definiéndolo dentro del VagrantFile y también especifico el nombre del host, así que disfruto ver 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"
Sí, para el proveedor de Virtualbox, haga algo como esto:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
y volver a encenderla, sigue llamándola predeterminada.
Puede cambiar el nombre de máquina predeterminado vagabundo 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, puede ejecutar, por ejemplo:
vagrant --vm-name=my_name up --no-provision
Nota: El --vm-name
parámetro debe especificarse antes del up
comando.
o:
VM_NAME=my_name vagrant up --no-provision
En caso de que haya muchas personas usando su archivo vagabundo, 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 del cuadro 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