Da dove viene il nome 'default' quando si lancia un box vagabondo?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
C'è un modo per impostare questo?
Da dove viene il nome 'default' quando si lancia un box vagabondo?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
C'è un modo per impostare questo?
Risposte:
Ho trovato confuse le molteplici 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
ed eseguita
vagrant init precise64 http://files.vagrantup.com/precise64.box
per generare un file Vagrant predefinito. Quindi ho aperto la GUI di VirtualBox in modo che potessi vedere con quali nomi appariranno le caselle che creo.
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 è nel formato DIRECTORY_default_TIMESTAMP.
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 GUI di VirtualBox: "nametest_foohost_1386347922"
Commenti: se si definisce esplicitamente una macchina virtuale, il nome utilizzato sostituisce il token "predefinito". Questo è il nome degli output vagabondi sulla console. Semplificazione basata zook
sull'input (commentatore)
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 della GUI di VirtualBox: "foohost"
Commenti: se si imposta l' name
attributo in un blocco di configurazione del provider, quel nome diventerà l'intero nome visualizzato nella GUI di VirtualBox.
Esempio combinato: definire la VM e impostare 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.define "foohost"
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
Nome della GUI di VirtualBox: "barhost"
Commenti: se si utilizzano entrambi i metodi contemporaneamente, name
vince il valore assegnato a nel blocco di configurazione del provider. Semplificazione basata zook
sull'input (commentatore)
Set 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 hostname
comando nella VM e anche questo è ciò che è visibile nel prompt vagrant@<hostname>
, qui appariràvagrant@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
Quindi eccolo. Ora conosci 3 diverse opzioni che puoi impostare e gli effetti che hanno. Immagino sia una questione di preferenza a questo punto? (Sono nuovo di Vagrant, quindi non posso ancora parlare delle migliori pratiche.)
VBoxManage list vms
dalla riga di comando.
define VM
nome del metodo viene utilizzato nello stdout e nei log di Vagrant, mentre il set provider name
nome viene utilizzato per la gestione della casella con il provider. Quindi entrambi sono rilevanti.
do... end
blocco se è vuoto. config.vm.define "foohost"
funziona benissimo.
Bringing machine 'default' up with 'virtualbox' provider...
vagrant up
Questo è il modo in cui ho assegnato i nomi alle singole macchine virtuali. Cambia YOURNAMEHERE
il 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)
config.vm.define :app_name
funziona anche semplicemente .
config.vm.define YOURNAMEHERE do |t| end
Se vuoi cambiare qualcos'altro invece di 'default', aggiungi semplicemente queste righe aggiuntive al tuo Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Dove "tendo" sarà il nome che apparirà al posto del default
Specifico il nome definendo all'interno del VagrantFile e anche il nome host, quindi 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"
Sì, per il provider Virtualbox fai qualcosa del genere:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
lo sta ancora chiamando come predefinito.
È possibile modificare il nome della macchina predefinita del 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 usare un nome diverso, puoi eseguire ad esempio:
vagrant --vm-name=my_name up --no-provision
Nota: il --vm-name
parametro deve essere specificato prima del up
comando.
o:
VM_NAME=my_name vagrant up --no-provision
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 della 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