Code source wiki de Créer une VM
Modifié par Gaetan RETEL le 2026/04/08 21:56
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | **Sur [[Touffu>>doc:Infrastructure.Serveurs_physiques.Touffu.WebHome]], [[Laika>>doc:Infrastructure.Serveurs_physiques.Laika.WebHome]], [[Odie>>doc:Infrastructure.Serveurs_physiques.Odie.WebHome]] ou [[Balto>>doc:Infrastructure.Serveurs_physiques.Balto.WebHome]]** (touffu.infra.atilla.org, laika.infra.atilla.org, odie.infra.atilla.org ou balto.infra.atilla.org) : | ||
| 2 | |||
| 3 | |||
| 4 | Créer une nouvelle instance de xen (par exemple) : | ||
| 5 | |||
| 6 | {{code language="bash"}} | ||
| 7 | 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 | ||
| 8 | {{/code}} | ||
| 9 | |||
| 10 | {{error}} | ||
| 11 | Sur Odie il faut remplacer {{code language="none"}}--lvm=VMs{{/code}} par {{code language="none"}}--lvm=data{{/code}}. Et sur Balto par {{code language="none"}}--lvm==lvm{{/code}}. | ||
| 12 | {{/error}} | ||
| 13 | |||
| 14 | {{warning}} | ||
| 15 | Pour le nom de la VM, ne pas oublier d'y ajouter les suffixes -prod, -preprod, -dev... | ||
| 16 | {{/warning}} | ||
| 17 | |||
| 18 | **Sur [[Bill>>doc:Infrastructure.Serveurs_physiques.Bill.WebHome]] **(root@atilla.org depuis l'extérieur, bill.infra.atilla.org depuis l'intérieur du réseau) : | ||
| 19 | |||
| 20 | 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 | ||
| 21 | |||
| 22 | //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. | ||
| 23 | |||
| 24 | {{info}} | ||
| 25 | Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HIdE9egE9nE9rale"]] | ||
| 26 | {{/info}} | ||
| 27 | |||
| 28 | 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. | ||
| 29 | |||
| 30 | Ensuite, on restart le système avec : | ||
| 31 | |||
| 32 | {{code language="none"}} | ||
| 33 | systemctl restart isc-dhcp-server.service # pour restart le DHCP | ||
| 34 | systemctl restart bind9 # pour restart le DNS | ||
| 35 | {{/code}} | ||
| 36 | |||
| 37 | **Sur [[Touffu>>doc:Infrastructure.Serveurs_physiques.Touffu.WebHome]], [[Laika>>doc:Infrastructure.Serveurs_physiques.Laika.WebHome]], [[Odie>>doc:Infrastructure.Serveurs_physiques.Odie.WebHome]] ou [[Balto>>doc:Infrastructure.Serveurs_physiques.Balto.WebHome]]** : | ||
| 38 | |||
| 39 | On voit que dans /etc/xen un fichier .cfg a été ajouté automatiquement. | ||
| 40 | |||
| 41 | Dans /etc/xen/auto, on crée un lien symbolique pour notre VM : | ||
| 42 | |||
| 43 | {{code language="none"}} | ||
| 44 | ln -s ../<nom de la VM>.cfg | ||
| 45 | {{/code}} | ||
| 46 | |||
| 47 | On crée ensuite la machine et on se rend sur son interface : | ||
| 48 | |||
| 49 | {{code language="none"}} | ||
| 50 | xl create -c <nom de la VM>.cfg | ||
| 51 | {{/code}} | ||
| 52 | |||
| 53 | **Sur la VM :** | ||
| 54 | |||
| 55 | login : root | ||
| 56 | |||
| 57 | mdp : celui que vous avez mis quand vous avez créé votre VM | ||
| 58 | |||
| 59 | Maintenant qu'on est sur l'interface de notre VM, on installe la base (vim et wget pour installer puppet) : | ||
| 60 | |||
| 61 | {{code language="none"}} | ||
| 62 | apt install vim wget | ||
| 63 | {{/code}} | ||
| 64 | |||
| 65 | On télécharge ensuite le paquet openvox (fork de puppet) correspondant à l'OS ([[voir sources>>https://apt.voxpupuli.org/]]), et on l'installe : | ||
| 66 | |||
| 67 | {{code language="none"}} | ||
| 68 | wget https://apt.voxpupuli.org/openvox8-release-debian<debian number version>.deb # exemple de debian version : 12, 13, ... | ||
| 69 | dpkg -i <nom du fichier téléchargé>.deb | ||
| 70 | {{/code}} | ||
| 71 | |||
| 72 | (% class="box infomessage" %) | ||
| 73 | ((( | ||
| 74 | Pour chercher la version de debian, on peut regarder le contenu du fichier /etc/debian_version ou utiliser la commande {{code language="bash"}}lsb_release -a {{/code}} | ||
| 75 | ))) | ||
| 76 | |||
| 77 | On update ensuite les paquets disponibles, et on installe l'agent openvox : | ||
| 78 | |||
| 79 | {{code language="none"}} | ||
| 80 | apt-get update | ||
| 81 | apt-get install openvox-agent | ||
| 82 | {{/code}} | ||
| 83 | |||
| 84 | (% class="box infomessage" %) | ||
| 85 | ((( | ||
| 86 | Openvox cherche à rester compatible avec l'écosystème puppet, les nom des exécutables et leur path sont donc identiques. | ||
| 87 | ))) | ||
| 88 | |||
| 89 | {{warning}} | ||
| 90 | Les exécutables de Puppet/Openvox 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. | ||
| 91 | {{/warning}} | ||
| 92 | |||
| 93 | On démarre ensuite le service de puppet : | ||
| 94 | |||
| 95 | {{code language="none"}} | ||
| 96 | /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true | ||
| 97 | {{/code}} | ||
| 98 | |||
| 99 | On modifie le fichier de configuration {{code language="none"}}/etc/puppetlabs/puppet/puppet.conf{{/code}} : | ||
| 100 | |||
| 101 | (% class="box" %) | ||
| 102 | ((( | ||
| 103 | {{{[main] | ||
| 104 | server = puppet-prod.prod.infra.atilla.org | ||
| 105 | certname = <server name>.infra.atilla.org}}} | ||
| 106 | ))) | ||
| 107 | |||
| 108 | On connecte ensuite l'agent au serveur de puppet : | ||
| 109 | |||
| 110 | {{code language="none"}} | ||
| 111 | /opt/puppetlabs/bin/puppet ssl bootstrap | ||
| 112 | {{/code}} | ||
| 113 | |||
| 114 | **En parallèle, sur [[Puppet>>doc:Infrastructure.Puppet.WebHome]]** (puppet.infra.atilla.org, qui fait tourner Openvox) : | ||
| 115 | |||
| 116 | Via la commande précédente, un certificat a été créé, que le serveur doit signer pour que les deux machines puissent communiquer. | ||
| 117 | |||
| 118 | Pour voir la liste des certificats pas signés : | ||
| 119 | |||
| 120 | {{code language="none"}} | ||
| 121 | puppetserver ca list | ||
| 122 | {{/code}} | ||
| 123 | |||
| 124 | Pour signer un certificat précis : | ||
| 125 | |||
| 126 | {{code language="none"}} | ||
| 127 | puppetserver ca sign --certname <nom de la VM> | ||
| 128 | {{/code}} | ||
| 129 | |||
| 130 | Pour signer tous les certificats pas signés : | ||
| 131 | |||
| 132 | {{code language="none"}} | ||
| 133 | puppetserver ca sign --all | ||
| 134 | {{/code}} | ||
| 135 | |||
| 136 | **Sur la VM :** | ||
| 137 | |||
| 138 | Pour vérifier que tout marche bien : | ||
| 139 | |||
| 140 | {{code language="none"}} | ||
| 141 | /opt/puppetlabs/bin/puppet ssl bootstrap | ||
| 142 | {{/code}} | ||
| 143 | |||
| 144 | (% class="wikigeneratedid" %) | ||
| 145 | Pour récupérer le catalogue manuellement : | ||
| 146 | |||
| 147 | (% class="box" %) | ||
| 148 | ((( | ||
| 149 | /opt/puppetlabs/bin/puppet agent -t | ||
| 150 | ))) | ||
| 151 | |||
| 152 | == Si on veut mettre la VM en ligne : == | ||
| 153 | |||
| 154 | **Sur [[Bill>>doc:Infrastructure.Serveurs_physiques.Bill.WebHome]] :** | ||
| 155 | |||
| 156 | {{info}} | ||
| 157 | 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>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HMiseenplacedelaconfigurationNginx"]] | ||
| 158 | {{/info}} | ||
| 159 | |||
| 160 | On crée un nouveau fichier dans /etc/nginx pour la VM (on peut copier sur les autres et adapter le nom). | ||
| 161 | |||
| 162 | On crée un fichier error.log et un fichier access.log dans /var/log/nginx | ||
| 163 | |||
| 164 | On va ensuite dans /etc/nginx/sites-enabled/<nom de domaine qu'on a choisi> et on crée un lien symbolique : | ||
| 165 | |||
| 166 | {{code language="none"}} | ||
| 167 | ln -s ../../sites-available/<DNS de la VM> | ||
| 168 | {{/code}} | ||
| 169 | |||
| 170 | De plus, on ajoute un certificat à l'aide de cette suite de commandes : | ||
| 171 | |||
| 172 | {{code language="none"}} | ||
| 173 | systemctl stop nginx && certbot certonly -d <DNS de la VM> && systemctl start nginx | ||
| 174 | {{/code}} | ||
| 175 | |||
| 176 | {{info}} | ||
| 177 | Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HMiseenplacedescertificatsSSL"]] | ||
| 178 | {{/info}} | ||
| 179 | |||
| 180 | |||
| 181 | |||
| 182 | == == |