D'où vient le nom "défaut" lors du lancement d'une boîte vagabonde?
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
Y at-il un moyen de définir cela?
J'ai trouvé les multiples options confuses et j'ai donc décidé de toutes les tester 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 j'ai exécuté
vagrant init precise64 http://files.vagrantup.com/precise64.box
générer un fichier Vagrant par défaut. Ensuite, j'ai ouvert l'interface graphique de VirtualBox afin de voir les noms sous lesquels les boîtes que je crée seraient affichées.
Vagrantfile 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 VirtualBox: "nametest_default_1386347922"
Commentaires: Le nom par défaut est au format DIRECTORY_default_TIMESTAMP.
Définir la 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 VM, le nom utilisé remplace le jeton 'default'. C'est le nom vagrant output sur la console. Simplification en fonction de l'entrée zook
(commenter)
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'attribut name
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 en fonction de l'entrée zook
(commenter)
Définir hostname
(BONUS)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "buzbar"
end
Commentaires: Ceci définit le nom d'hôte à l'intérieur de la machine virtuelle. Ce serait le résultat de la commande hostname
dans VM et ceci est visible dans l'invite, comme vagrant@<hostname>
, ici il ressemblera à 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
Tiens voilà. Vous connaissez maintenant 3 options différentes que vous pouvez définir et les effets qu’elles ont. Je suppose que c'est une question de préférence à ce stade? (Je suis nouveau dans Vagrant, je ne peux donc pas encore parler des meilleures pratiques.)
C’est ainsi que j’ai attribué des noms à des machines virtuelles individuelles. Changez YOURNAMEHERE
en votre nom désiré.
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 du terminal:
$ vagrant status
Current machine states:
YOURNAMEHERE not created (virtualbox)
Si vous voulez changer quoi que ce soit au lieu de 'default', ajoutez simplement ces lignes supplémentaires à votre Vagrantfile:
config.vm.define "tendo" do |tendo|
end
Où "tendo" sera le nom qui apparaîtra à la place du nom par défaut
Oui, pour le fournisseur Virtualbox, procédez comme suit:
Vagrant.configure("2") do |config|
# ...other options...
config.vm.provider "virtualbox" do |p|
p.name = "something-else"
end
end
Je spécifie le nom par en définissant à l'intérieur du VagrantFile et en spécifiant également le nomhôte donc j'aime voir le nom de mon projet lors de l'exécution de commandes Linux indépendamment du système d'exploitation de mon périphérique. ✌️
config.vm.define "abc"
config.vm.hostname = "abc"
Vous pouvez modifier le nom d'ordinateur par défaut vagrant en modifiant la valeur de config.vm.define
.
Voici le fichier simple Vagrant qui utilise getopts et vous permet de changer le nom de manière dynamique:
# -*- 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 paramètre --vm-name
doit être spécifié avant la commande up
.
ou:
VM_NAME=my_name vagrant up --no-provision
Au cas où de nombreuses personnes utiliseraient votre fichier vagrant - vous voudrez peut-être définissez le nom de manière dynamique . Vous trouverez ci-dessous un exemple d'utilisation du nom d'utilisateur de votre machine hôte comme nom de la boîte et du 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