web-dev-qa-db-fra.com

Comment changer le nom d'ordinateur 'par défaut' de Vagrant?

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?

203
Kyle Kelley

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.

  1. 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.

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

  3. 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)

  4. 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

Code final

    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.)

313
odigity

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)
57
nikhil

Si vous voulez changer quoi que ce soit au lieu de 'default', ajoutez simplement ces lignes supplémentaires à votre Vagrantfile:

Changer le nom de la boîte de base lors de l'utilisation de "statut vagabond"

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

Où "tendo" sera le nom qui apparaîtra à la place du nom par défaut

15
Arbab Nazar

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
5
cmur2

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"
4
muratgozel

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
3
kenorb

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
0
Anton Sluchak