Créer une VM

Modifié par Kevin FRICK le 2024/04/02 01:17

Sur Touffu, Laika, Odie ou Balto (touffu.infra.atilla.org, laika.infra.atilla.org, odie.infra.atilla.org ou balto.infra.atilla.org) :

Créer une nouvelle instance de xen (par exemple) :

xen-create-image --hostname=<nom de la VM> --dist=stable --lvm=VMs --dhcp --memory=1G --password=<mot de passe de la VM> --size=5G --swap=256M --vcpus=1

Sur Odie il faut remplacer --lvm=VMs par --lvm=data. Et sur Balto par --lvm==lvm.

Pour le nom de la VM, ne pas oublier d'y ajouter les suffixes -prod, -preprod, -dev...

Sur Bill (root@atilla.org depuis l'extérieur, bill.infra.atilla.org depuis l'intérieur du réseau) :

Dans /etc/bind/internal, on cherche un slot vide à la bonne adresse IP et on le remplit BIEN (c'est-à-dire qu'on fait attention à bien écrire si on est en prod, preprod, ou dev dans le nom de la VM). On modifie aussi db.10.168.192.in-addr.arpa

Si on met le site en ligne : On modifie aussi le fichier db du nom de domaine (db.atilla.org ou db.eistiens.net) dans /etc/bind/internal et dans /etc/bind/external.

Si vous voulez comprendre ce que vous venez de faire, cliquez ici

Dans /etc/dhcp, on trouve tous les DHCP dans chacun des fichiers (prod.conf, dev.conf, ...), on remplit le bon fichier avec l'adresse MAC et l'adresse IP correspondante.

Ensuite, on restart le système avec :

systemctl restart isc-dhcp-server.service # pour restart le DHCP
systemctl restart bind9 # pour restart le DNS

Sur Touffu, Laika, Odie ou Balto :

On voit que dans /etc/xen un fichier .cfg a été ajouté automatiquement.

Dans /etc/xen/auto, on crée un lien symbolique pour notre VM :

ln -s ../<nom de la VM>.cfg

 On crée ensuite la machine et on se rend sur son interface :

xl create -c <nom de la VM>.cfg

Sur la VM :

login : root

mdp : celui que vous avez mis quand vous avez créé votre VM

Maintenant qu'on est sur l'interface de notre VM, on installe la base (vim et wget pour installer puppet) :

apt install vim wget

On télécharge ensuite le paquet de puppet, et on l'installe :

wget  https://apt.puppet.com/puppet7-release-<debian version>.deb  # exemple de debian version : stretch, buster, ...
dpkg -i <nom du fichier téléchargé>.deb

Pour chercher la version de debian, on peut regarder le contenu du fichier /etc/debian_version

On update ensuite les paquets disponibles, et on installe l'agent puppet :

apt-get update
apt-get install puppet-agent

Les exécutables de Puppet ne sont pas dans le PATH par défaut (ces derniers se trouvent dans /opt/puppetlabs/bin). On utilise donc des chemins absolus dans les prochaines étapes. Lors de la première sychronisation avec Puppet, le .bashrc de l'utilisateur root sera mis à jour pour inclure ce chemin dans le PATH par défaut.

On démarre ensuite le service de puppet :

/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

 On connecte ensuite l'agent au serveur de puppet :

/opt/puppetlabs/bin/puppet ssl bootstrap

En  parallèle, sur Puppet (puppet.infra.atilla.org) :

Via la commande précédente, un certificat a été créé, que le serveur doit signer pour que les deux machines puissent communiquer.

Pour voir la liste des certificats pas signés :

puppetserver ca list

Pour signer un certificat précis :

puppetserver ca sign --certname <nom de la VM>

 Pour signer tous les certificats pas signés :

puppetserver ca sign --all

 Sur la VM :

Pour vérifier que tout marche bien :

/opt/puppetlabs/bin/puppet ssl bootstrap

Si on veut mettre la VM en ligne :

Sur Bill :

Il existe plusieurs manières de configurer nginx, on en détaille une ici, mais si vous voulez la comprendre ou utiliser l'autre, cliquez ici

On crée un nouveau fichier dans /etc/nginx pour la VM (on peut copier sur les autres et adapter le nom).

On crée un fichier error.log et un fichier access.log dans /var/log/nginx

On va ensuite dans /etc/nginx/sites-enabled/<nom de domaine qu'on a choisi> et on crée un lien symbolique :

ln -s ../../sites-available/<DNS de la VM>

De plus, on ajoute un certificat à l'aide de cette suite de commandes :

systemctl stop nginx && certbot certonly -d <DNS de la VM> && systemctl start nginx

Si vous voulez comprendre ce que vous venez de faire, cliquez ici