Come cambiare il nome macchina ‘default’ di Vagrant?

Da dove viene il nome “predefinito” quando si lancia una scatola vagabonda?

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

C’è un modo per impostare questo?

Ho trovato confuse le varie opzioni, quindi ho deciso di testarle tutte per vedere esattamente cosa fanno.

Sto usando VirtualBox 4.2.16-r86992 e Vagrant 1.3.3.

Ho creato una directory chiamata nametest e nametest eseguito

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

per generare un Vagrantfile predefinito. Quindi ho aperto la GUI di VirtualBox in modo da poter vedere quali nomi le caselle che creo mostrerebbero come.

  1. Vagrantfile predefinito

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

    Nome GUI VirtualBox: “nametest_default_1386347922”

    Commenti: il nome predefinito è il formato DIRECTORY_default_TIMESTAMP.

  2. Definisci 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 

    Nome della GUI di VirtualBox: “nametest_foohost_1386347922”

    Commenti: se si definisce esplicitamente una macchina virtuale, il nome utilizzato sostituisce il token ‘predefinito’. Questo è il nome di uscite vagabonde sulla console. Semplificazione basata zook di zook (commenter)

  3. Imposta il nome del provider

     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 

    Nome GUI VirtualBox: “foohost”

    Commenti: se si imposta l’attributo name in un blocco di configurazione del provider, tale nome diventerà l’intero nome visualizzato nella GUI di VirtualBox.

    Esempio combinato: Definisci VM -e– Imposta nome provider

     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 

    Nome GUI VirtualBox: “barhost”

    Commenti: se si utilizzano entrambi i metodi allo stesso tempo, vince il valore assegnato al name nel blocco di configurazione del provider. Semplificazione basata zook di zook (commenter)

  4. Imposta hostname (BONUS)

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

    Commenti: imposta il nome host all’interno della VM. Questo sarebbe l’output del comando hostname nella VM e anche questo è ciò che è visibile nel prompt come [email protected] , qui sembrerà [email protected]

Codice finale

  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 

Quindi eccolo. Ora conosci 3 diverse opzioni che puoi impostare e gli effetti che hanno. Immagino che sia una questione di preferenza a questo punto? (Sono nuovo di Vagrant, quindi non posso ancora parlare con le migliori pratiche).

Questo è il modo in cui ho assegnato i nomi alle singole VM. Cambia YOURNAMEHERE al tuo nome desiderato.

Contenuto di 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 

Uscita terminale:

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

Se vuoi cambiare qualcos’altro invece di ‘default’, aggiungi semplicemente queste linee aggiuntive al tuo Vagrantfile:

Cambia il nome della basebox, quando usi “lo stato vagabondo”

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

Dove “tendo” sarà il nome che apparirà invece di default

Sì, per il provider Virtualbox fare qualcosa del genere:

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

È ansible modificare il nome del computer predefinito vagabondo modificando il valore di config.vm.define .

Ecco il semplice Vagrantfile che usa getopts e ti permette di cambiare il nome in modo dinamico:

 # -*- 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 

Quindi, per utilizzare un nome diverso, è ansible eseguire ad esempio:

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

Nota: il parametro --vm-name deve essere specificato prima del comando up .

o:

 VM_NAME=my_name vagrant up --no-provision 

Specifico il nome definendolo all’interno di VagrantFile e specificando anche il nome host così mi diverto a vedere il nome del mio progetto mentre eseguo i comandi Linux indipendentemente dal sistema operativo del mio dispositivo. ✌️

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

Nel caso in cui ci siano molte persone che usano il tuo file vagabondo, potresti voler impostare il nome in modo dinamico . Di seguito è riportato l’esempio su come farlo utilizzando il nome utente dalla macchina HOST come nome della casella e nome 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