D'où vient le nom 'default' lors du lancement d'une boîte vagabonde?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Y a-t-il un moyen de régler cela?
D'où vient le nom 'default' lors du lancement d'une boîte vagabonde?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Y a-t-il un moyen de régler cela?
Réponses:
J'ai trouvé les multiples options déroutantes, j'ai donc décidé de les tester toutes pour voir exactement ce qu'elles faisaient.
J'utilise VirtualBox 4.2.16-r86992 et Vagrant 1.3.3.
J'ai créé un répertoire appelé nametest
et exécuté
vagrant init precise64 http://files.vagrantup.com/precise64.box
pour générer un Vagrantfile par défaut. Ensuite, j'ai ouvert l'interface graphique de VirtualBox pour que je puisse voir les noms des boîtes que je créerais.
Fichier Vagrant par défaut
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
end
Nom de l'interface graphique de VirtualBox: "nametest_default_1386347922"
Commentaires: Le nom est par défaut au format DIRECTORY_default_TIMESTAMP.
Définir 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
Nom de l'interface graphique de VirtualBox: "nametest_foohost_1386347922"
Commentaires: Si vous définissez explicitement une machine virtuelle, le nom utilisé remplace le jeton «par défaut». Il s'agit du nom des sorties vagabondes sur la console. Simplification basée sur zook
l'entrée de (commentateur)
Définir le nom du fournisseur
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
Nom de l'interface graphique de VirtualBox: "foohost"
Commentaires: Si vous définissez l' name
attribut dans un bloc de configuration de fournisseur, ce nom deviendra le nom complet affiché dans l'interface graphique de VirtualBox.
Exemple combiné: définir VM et définir le nom du fournisseur
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
Nom de l'interface graphique de VirtualBox: "barhost"
Commentaires: si vous utilisez les deux méthodes en même temps, la valeur attribuée à name
dans le bloc de configuration du fournisseur l'emporte. Simplification basée sur zook
l'entrée de (commentateur)
Set hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Commentaires: cela définit le nom d'hôte à l'intérieur de la machine virtuelle. Ce serait la sortie de la hostname
commande dans la machine virtuelle et c'est également ce qui est visible dans l'invite vagrant@<hostname>
, ici, cela ressembleravagrant@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
Tiens voilà. Vous connaissez maintenant 3 options différentes que vous pouvez définir et leurs effets. Je suppose que c'est une question de préférence à ce stade? (Je suis nouveau sur Vagrant, donc je ne peux pas encore parler des meilleures pratiques.)
VBoxManage list vms
sur la ligne de commande.
define VM
nom de la méthode est utilisé dans stdout Vagrant et les journaux, tandis que le set provider name
nom est utilisé pour gérer la boîte avec le fournisseur. Les deux sont donc pertinents.
do... end
bloc s'il est vide. config.vm.define "foohost"
fonctionne très bien.
Bringing machine 'default' up with 'virtualbox' provider...
quand vous exécutezvagrant up
C'est ainsi que j'ai attribué des noms à des machines virtuelles individuelles. ChangementYOURNAMEHERE
pour votre nom souhaité.
Contenu 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
Sortie borne:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
config.vm.define :app_name
fonctionne aussi.
config.vm.define YOURNAMEHERE do |t| end
Si vous souhaitez changer autre chose au lieu de «par défaut», ajoutez simplement ces lignes supplémentaires à votre Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Où "tendo" sera le nom qui apparaîtra au lieu de défaut
Je spécifie le nom en définissant à l'intérieur du VagrantFile et spécifie également le nom d'hôte, donc j'aime voir le nom de mon projet lors de l'exécution des commandes Linux indépendamment du système d'exploitation de mon appareil. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Oui, pour le fournisseur Virtualbox, faites quelque chose comme ceci:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
vagrant destroy
puis l'avoir ramené, il l'appelle toujours par défaut.
Vous pouvez modifier le nom de machine par défaut vagabond en modifiant la valeur de config.vm.define
.
Voici le simple Vagrantfile qui utilise getopts et vous permet de changer le nom dynamiquement:
# -*- 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
Donc, pour utiliser un nom différent, vous pouvez exécuter par exemple:
vagrant --vm-name=my_name up --no-provision
Remarque: Le --vm-name
paramètre doit être spécifié avant la up
commande.
ou:
VM_NAME=my_name vagrant up --no-provision
Dans le cas où de nombreuses personnes utilisent votre fichier vagabond - vous souhaiterez peut-être définir un nom de manière dynamique . Vous trouverez ci-dessous l'exemple comment le faire en utilisant le nom d'utilisateur de votre machine HÔTE comme nom de la boîte et nom d'hôte:
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