Probablement une question stupide mais
J’ai déjà utilisé la boîte trusty64 avec vagrant et j’essayais la boîte xenial64 mais il n’accepte pas l’utilisateur habituel: mot de passe vagrant: login vagrant?
Comme mentionné par l’utilisateur @prometee dans cette discussion du tableau de bord # 1569237 , vous pouvez trouver le mot de passe dans:
~/.vagrant.d/ubuntu-VAGRANTSLASH-xenial64/20161221.0.0/virtualbox/Vagrantfile
ou:
~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20161221.0.0/virtualbox/Vagrantfile
en fonction de votre version de vagrant. (Notez que la partie 20161221.0.0
du chemin varie en fonction du moment où la boîte a été téléchargée. De plus, il peut en 20161221.0.0
plusieurs dans votre répertoire.)
Voici le mien (ligne 8):
# Front load the includes include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__) load include_vagrantfile if File.exist?(include_vagrantfile) Vagrant.configure("2") do |config| config.vm.base_mac = "022999D56C03" config.ssh.username = "ubuntu" config.ssh.password = "fbcd1ed4fe8c83b157dc6e0f" config.vm.provider "virtualbox" do |vb| vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ] vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "ubuntu-xenial-16.04-cloudimg-console.log") ] end end
Pour info, l’utilisateur @racb mentionne dans la même discussion que le this bug report having been filed
à Ubuntu et no [...] decision has been made yet
sujet.
Hier, je me suis cogné la tête contre le mur pendant une demi-journée jusqu’à ce que je réalise une ancienne version de Virtualbox (5.0.x) et de Vagrant (1.8.0).
Mise à jour vers VirtualBox 5.1.x et Vagrant 1.8.7 pour de meilleurs résultats
Fondamentalement, les images ubuntu/xenial32
et ubuntu/xenial64
sont imparfaites car elles ne sont pas livrées avec l’utilisateur ubuntu/xenial64
.
Ceci est contre les spécifications vagrantes
J’ai fini par utiliser v0rtex/xenial64
comme recommandé dans ce rapport de bogue . Vous ne savez pas pourquoi canonical
ne résout pas ce problème
Mon dossier vagrant est comme suit
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "v0rtex/xenial64" config.vm.network :private_network, ip: "10.10.10.10" config.ssh.username = 'vagrant' config.ssh.password = 'vagrant' config.vm.provider :virtualbox do |vb| vb.name = "supercool" vb.customize ["modifyvm", :id, "--memory", "768"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end end
Si vous voulez toujours utiliser les images fournies canonical
, il est possible d’utiliser l’approche suivante
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/xenial64" config.vm.network :private_network, ip: "10.10.10.10" config.ssh.insert_key = true config.ssh.forward_agent = true config.vm.provider :virtualbox do |vb| vb.name = "supercool" vb.customize ["modifyvm", :id, "--memory", "768"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end end
Si vous faites cela, le dossier /vagrant
appartiendra à ubuntu:ubuntu
au lieu de vagrant:vagrant
. Si vous avez des scripts qui s’appuient sur l’utilisateur vagrant
, ils se briseront.
Il a enfin été résolu (2018/01/13): https://bugs.launchpad.net/cloud-images/+bug/1569237/comments/111
Vous voudrez peut-être lancer la vagrant box update
et ensuite vagrant destroy
.
Une méthode consiste à installer expect et à lancer un changement de mot de passe. L’exemple ci-dessous définit le mot de passe ubuntu sur utilisateur ubuntu.
Vagrant.configure("2") do |config| apt-get install -y expect echo '#!/usr/bin/expect set timeout 20 spawn sudo passwd ubuntu expect "Enter new UNIX password:" {send "ubuntu\\r"} expect "Retype new UNIX password:" {send "ubuntu\\r"} interact' > change_ubuntu_password chmod +x change_ubuntu_password ./change_ubuntu_password end
La nouvelle image ubuntu/xenial64
ne vient pas avec un nom d’utilisateur et un mot de passe par défaut. Cependant, vous pouvez utiliser ssh avec une clé ssh générée dans votre dossier vagrant.
Supposons que votre fichier Vagrant soit dans /vagrant/vm01/Vagrantfile
, la clé ssh serait dans /vagrant/vm01/.vagrant/machines/..../private_key
Vous pouvez vous connecter à votre private_key
vagrant à l’aide de cette private_key
. Si l’ordinateur invité demande la phrase secrète de la clé, ENTER
simplement sur ENTER
(en spécifiant une phrase secrète vierge). Par exemple, sur mon Mac:
ssh -i /vagrant/vm01/.vagrant/..../private_key
Si vous souhaitez toujours vous connecter à l’aide d’un nom d’utilisateur et d’un mot de passe, vous pouvez append votre propre utilisateur pour vous connecter ultérieurement:
# create a user for log in sudo useradd yourusername # specify a password sudo passwd yourusername # then type your password when prompted # add the user to sudo group sudo adduser yourusername sudo # create a home folder for your user sudo mkdir /home/yourusername # add a shell command for your user (normally /bin/bash) sudo vim /etc/passwd # find yourusername line, and add /bin/bash to the end. # the end result would look like this: yourusername:x:1020:1021::/home/yourusername:/bin/bash
Maintenant, vous pouvez utiliser SSH avec le nouveau nom d’utilisateur et mot de passe
Vous pouvez exporter une configuration valide OpenSSH pour vous connecter à la machine en tapant vagrant ssh-config
partir de votre dossier Vagrantfile. La sortie vous montrera que l’authentification par mot de passe est désactivée, mais vous pouvez pointer vers le fichier de clé privée:
Host default HostName 127.0.0.1 User ubuntu Port 2222 UserKnownHostsFile /dev/null SsortingctHostKeyChecking no PasswordAuthentication no IdentityFile /path/to/project/folder/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
Maintenant vous pouvez:
ssh -i /path/to/project/folder/.vagrant/machines/default/virtualbox/private_key ubuntu@machine-ip
Si vous n’êtes pas intéressé par ubuntu/xenial64
box mais par tout autre box 16.04 LTS, j’ai utilisé celui de bento qui fonctionne avec le nom d’utilisateur et le mot de passe habituels du vagrant
:
config.vm.box = 'bento/ubuntu-16.04' config.vm.box_version = "201708.22.0"
J’utilise Vagrant sous Windows et l’image d’ ubuntu / xenial64 sans mot de passe configuré pour cela.
Vous pouvez vous connecter à votre machine virtuelle via la commande:
vagrant ssh
ou par
ssh -i private_key vagrant:127.0.0.1 -p 2222