Vagrant: utilisation de base
vagrant est un outil permettant de provisionner une machine virtuelle. Voyons quelques bases de son utilisation.
Il peut utiliser plusieurs fournisseurs de moteur de machine virtuelle, dont virtualbox. Utiliser une machine virtuelle a un intérêt pour tester un playbook ansible sans attaquer la machine cible directement.
Installation
Avec un hôte MacOS intel et le gestionnaire de paquet homebrew :
1brew install virtualbox virtualbox-extension-pack vagrant
Création d'une machine
1mkdir -p vm/centos7-1 && cd vm/centos7-1
2vagrant init centos/7
La commande précédente crée un fichier Vagrantfile et un sous répertoire .vagrant dans le répertoire centos7-1. La box utilisée sera centos/7.
Lançons la VM (et provisionnons la si 1er boot) :
1vagrant up [id]
Si le paramètre optionnel id est passé, il permet de lancer une VM spécifique sans avoir besoin d'être dans le même répertoire que son Vagrantfile associé. Sans paramètre id, la VM lancée est celle dans laquelle le Vagrantfile est dans le répertoire courant.
Ceci télécharge si besoin l'OS etc ...
Quelques infos sur notre nouvelle VM :
1% vagrant ssh-config
2Host default
3 HostName 127.0.0.1
4 User vagrant
5 Port 2222
6 UserKnownHostsFile /dev/null
7 StrictHostKeyChecking no
8 PasswordAuthentication no
9 IdentityFile .vagrant/machines/default/virtualbox/private_key
10 IdentitiesOnly yes
11 LogLevel FATAL
Le serveur ssh de cette VM est accessible sur le port 2222 avec la clé privée ssh qui est localement dans .vagrant/machines/default/virtualbox/private_key
On peut s'y connceter avec la commande :
1ssh vagrant@127.0.0.1 -p 2222 -i .vagrant/machines/default/virtualbox/private_key
Commandes utiles
Voir toutes les infos sur toutes les VM vagrant
1vagrant global-status
2id name provider state directory
3------------------------------------------------------------------------
4e4a9aff default virtualbox running /Users/<user>/vm/centos7-1
Arrêter la VM
1vagrant halt [id]
Arrêter + effacer la VM
1vagrant destroy [id]
Voir les box installées
1$ vagrant box list
2centos/7 (virtualbox, 2004.01)
3geerlingguy/centos7 (virtualbox, 1.2.26)
4generic/rocky9 (virtualbox, 4.1.16)
Password root
L'utilisateur vagrant est par défaut dans les sudoers, on peut utiliser la commande suivante pour définir un mot de passe root:
1$ sudo passwd root
2Changing password for user root.
3New password:
4Retype new password:
5passwd: all authentication tokens updated successfully.
Update: dans le Vagrantfile on peut provisionner la VM avec un script shell de ce type :
1usermod --password $(echo vagrant | openssl passwd -1 -stdin) root
ce qui modifie le password root sans interaction.