Réorganisation de sections + ajout d'un quickstart
This commit is contained in:
parent
a60ef9093e
commit
fb7fe9b4f5
193
HowtoVagrant.md
193
HowtoVagrant.md
|
@ -19,7 +19,77 @@ apt install vagrant
|
||||||
Des paquets Debian officiels (maintenus par Hashicorp) sont aussi disponibles pour des versions plus récentes, mais sans dépôt : <https://www.vagrantup.com/downloads.html>
|
Des paquets Debian officiels (maintenus par Hashicorp) sont aussi disponibles pour des versions plus récentes, mais sans dépôt : <https://www.vagrantup.com/downloads.html>
|
||||||
|
|
||||||
|
|
||||||
## Configuration d'un environnement avec le `Vagrantfile`
|
## Quickstart
|
||||||
|
|
||||||
|
Prérequis : `libvirt`, DHCP
|
||||||
|
|
||||||
|
Créer un fichier `Vagrantfile` dans un répertoire dédié :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.provider :libvirt do |libvirt|
|
||||||
|
libvirt.memory = 1024
|
||||||
|
libvirt.cpus = 2
|
||||||
|
libvirt.keymap = "fr"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.box = "debian/bookworm64"
|
||||||
|
|
||||||
|
config.vm.define :test_vagrant do |node|
|
||||||
|
node.vm.hostname = "test-vagrant"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.synced_folder "./", "/vagrant", disabled: true
|
||||||
|
end
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Lancer la box :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ vagrant up test_vagrant
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Se connecter à la box :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
$ vagrant ssh test_vagrant
|
||||||
|
vagrant@test-vagrant:~$
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
## Fonctionnement
|
||||||
|
|
||||||
|
### Boxes
|
||||||
|
|
||||||
|
Vagrant utilise des [boxes](https://developer.hashicorp.com/vagrant/docs/boxes) pour créer des VMs ou des conteneurs.
|
||||||
|
|
||||||
|
Ce sont des images de systèmes pré-installés.
|
||||||
|
|
||||||
|
On peut trouver des boxes dans le [catalogue public de son éditeur HashCorp](https://vagrantcloud.com/boxes/search).
|
||||||
|
|
||||||
|
Les boxes sont nommées par fournisseurs, par exemple :
|
||||||
|
|
||||||
|
* `debian/bullseye64`
|
||||||
|
* `debian/bookworm64`
|
||||||
|
|
||||||
|
On peut aussi les récupérer en spécifiant une URL plutôt à la place du nom de la box.
|
||||||
|
|
||||||
|
|
||||||
|
### Providers
|
||||||
|
|
||||||
|
Vagrant permet de lancer et configurer des boxes dans VirtualBox, Libvirt, LXC, VMware, Docker, Amazon EC2 et autres.
|
||||||
|
|
||||||
|
Ces providers peuvent être locaux ou situés sur des serveurs distants.
|
||||||
|
|
||||||
|
|
||||||
|
#### Libvirt
|
||||||
|
|
||||||
|
Les boxes et les images `QCOW2` du provider `libvirt` sont stockées par défaut dans `/var/lib/libvirt/images/`.
|
||||||
|
|
||||||
|
Par défaut, le volume de stockage est une image au format `QCOW2`, ce qui éviter d'avoir à réserver de l'espace disque.
|
||||||
|
|
||||||
|
|
||||||
|
## Syntaxe - Configuration d'un environnement avec le `Vagrantfile`
|
||||||
|
|
||||||
Le `Vagrantfile` est unique à un projet et doit être situé dans le répertoire racine de ce dernier.
|
Le `Vagrantfile` est unique à un projet et doit être situé dans le répertoire racine de ce dernier.
|
||||||
|
|
||||||
|
@ -131,82 +201,7 @@ config.vm.provider :virtualbox do |v|
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
#### Configurer localement le provider par défaut
|
## Utilisation du CLI
|
||||||
|
|
||||||
Si le `Vagrantfile` de l'environnement est partagé entre plusieurs utilisateurs, ceux-ci peuvent souhaiter utiliser différents providers.
|
|
||||||
|
|
||||||
Pour cela, on peut créer un fichier `~/.Vagrantfile` local, configurant le provider par défaut de l'utilisateur. Par exemple, pour utiliser par défaut le provider `libvirt` :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
Vagrant.configure("2") do |config|
|
|
||||||
config.vm.provider "libvirt"
|
|
||||||
end
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Ensuite, il faut mettre dans le `Vagrantfile` de chaque environnement cet en-tête :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
# Load ~/.Vagrantfile if exist, permit local config provider
|
|
||||||
vagrantfile = File.join("#{Dir.home}", '.Vagrantfile')
|
|
||||||
load File.expand_path(vagrantfile) if File.exists?(vagrantfile)
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Si `~/.Vagrantfile` n'existe pas et qu'aucun provider n'est défini, le provider par défaut du système sera utilisé.
|
|
||||||
|
|
||||||
|
|
||||||
### Synchroniser un répertoire entre l'hôte et l'invité
|
|
||||||
|
|
||||||
<https://developer.hashicorp.com/vagrant/docs/synced-folders>
|
|
||||||
|
|
||||||
|
|
||||||
#### Avec Rsync
|
|
||||||
|
|
||||||
*Documentation à venir*
|
|
||||||
|
|
||||||
<https://developer.hashicorp.com/vagrant/docs/synced-folders/rsync>
|
|
||||||
|
|
||||||
Synchroniser automatiquement le répertoire :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
vagrant rsync-auto
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Voir la [documentation](https://developer.hashicorp.com/vagrant/docs/synced-folders/rsync).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Fonctionnement
|
|
||||||
|
|
||||||
### Boxes
|
|
||||||
|
|
||||||
Vagrant utilise des [boxes](https://developer.hashicorp.com/vagrant/docs/boxes) pour créer des VMs ou des conteneurs.
|
|
||||||
|
|
||||||
Ce sont des images de systèmes pré-installés.
|
|
||||||
|
|
||||||
On peut trouver des boxes dans le [catalogue public de son éditeur HashCorp](https://vagrantcloud.com/boxes/search).
|
|
||||||
|
|
||||||
Les boxes sont nommées par fournisseurs, par exemple :
|
|
||||||
|
|
||||||
* `debian/bullseye64`
|
|
||||||
* `debian/bookworm64`
|
|
||||||
|
|
||||||
On peut aussi les récupérer en spécifiant une URL plutôt à la place du nom de la box.
|
|
||||||
|
|
||||||
|
|
||||||
### Providers
|
|
||||||
|
|
||||||
Vagrant permet de lancer et configurer des boxes dans VirtualBox, Libvirt, LXC, VMware, Docker, Amazon EC2 et autres.
|
|
||||||
|
|
||||||
Ces providers peuvent être locaux ou situés sur des serveurs distants.
|
|
||||||
|
|
||||||
|
|
||||||
#### Libvirt
|
|
||||||
|
|
||||||
Les boxes et les images `QCOW2` du provider `libvirt` sont stockées par défaut dans `/var/lib/libvirt/images/`.
|
|
||||||
|
|
||||||
Par défaut, le volume de stockage est une image au format `QCOW2`, ce qui éviter d'avoir à réserver de l'espace disque.
|
|
||||||
|
|
||||||
## Utilisation
|
|
||||||
|
|
||||||
### Gestion des boxes
|
### Gestion des boxes
|
||||||
|
|
||||||
|
@ -372,3 +367,47 @@ $ vagrant upload source [destination] [<VM_ID|NAME>]
|
||||||
vagrant provision
|
vagrant provision
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
### Configurer localement le provider par défaut
|
||||||
|
|
||||||
|
Si le `Vagrantfile` de l'environnement est partagé entre plusieurs utilisateurs, ceux-ci peuvent souhaiter utiliser différents providers.
|
||||||
|
|
||||||
|
Pour cela, on peut créer un fichier `~/.Vagrantfile` local, configurant le provider par défaut de l'utilisateur. Par exemple, pour utiliser par défaut le provider `libvirt` :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.provider "libvirt"
|
||||||
|
end
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Ensuite, il faut mettre dans le `Vagrantfile` de chaque environnement cet en-tête :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
# Load ~/.Vagrantfile if exist, permit local config provider
|
||||||
|
vagrantfile = File.join("#{Dir.home}", '.Vagrantfile')
|
||||||
|
load File.expand_path(vagrantfile) if File.exists?(vagrantfile)
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Si `~/.Vagrantfile` n'existe pas et qu'aucun provider n'est défini, le provider par défaut du système sera utilisé.
|
||||||
|
|
||||||
|
|
||||||
|
### Synchroniser un répertoire entre l'hôte et l'invité
|
||||||
|
|
||||||
|
<https://developer.hashicorp.com/vagrant/docs/synced-folders>
|
||||||
|
|
||||||
|
|
||||||
|
#### Avec Rsync
|
||||||
|
|
||||||
|
*Documentation à venir*
|
||||||
|
|
||||||
|
<https://developer.hashicorp.com/vagrant/docs/synced-folders/rsync>
|
||||||
|
|
||||||
|
Synchroniser automatiquement le répertoire :
|
||||||
|
|
||||||
|
~~~
|
||||||
|
vagrant rsync-auto
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Voir la [documentation](https://developer.hashicorp.com/vagrant/docs/synced-folders/rsync).
|
||||||
|
|
Loading…
Reference in a new issue