Code source wiki de Créer une VM

Modifié par Gaetan RETEL le 2026/04/08 21:56

Masquer les derniers auteurs
Kevin FRICK 15.1 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) :
sasportesj 1.1 2
3
4 Créer une nouvelle instance de xen (par exemple) :
5
6 {{code language="bash"}}
sasportesj 4.1 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
sasportesj 1.1 8 {{/code}}
9
Kevin FRICK 14.1 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
sasportesj 9.1 14 {{warning}}
15 Pour le nom de la VM, ne pas oublier d'y ajouter les suffixes -prod, -preprod, -dev...
16 {{/warning}}
sasportesj 1.1 17
Kevin FRICK 15.1 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) :
sasportesj 1.1 19
sasportesj 5.1 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
sasportesj 1.1 21
sasportesj 11.1 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.
sasportesj 5.1 23
sasportesj 12.1 24 {{info}}
25 Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HIdE9egE9nE9rale"]]
26 {{/info}}
sasportesj 5.1 27
sasportesj 1.1 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
Kevin FRICK 15.1 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]]** :
sasportesj 1.1 38
sasportesj 9.1 39 On voit que dans /etc/xen un fichier .cfg a été ajouté automatiquement.
sasportesj 1.1 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
Gaetan RETEL 15.3 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 :
sasportesj 1.1 66
67 {{code language="none"}}
Gaetan RETEL 15.4 68 wget https://apt.voxpupuli.org/openvox8-release-debian<debian number version>.deb # exemple de debian version : 12, 13, ...
sasportesj 1.1 69 dpkg -i <nom du fichier téléchargé>.deb
70 {{/code}}
71
sasportesj 7.1 72 (% class="box infomessage" %)
73 (((
Gaetan RETEL 16.1 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}}
sasportesj 7.1 75 )))
76
Gaetan RETEL 15.5 77 On update ensuite les paquets disponibles, et on installe l'agent openvox :
sasportesj 1.1 78
79 {{code language="none"}}
80 apt-get update
Gaetan RETEL 15.5 81 apt-get install openvox-agent
sasportesj 1.1 82 {{/code}}
83
Gaetan RETEL 15.6 84 (% class="box infomessage" %)
85 (((
Gaetan RETEL 15.7 86 Openvox cherche à rester compatible avec l'écosystème puppet, les nom des exécutables et leur path sont donc identiques.
Gaetan RETEL 15.6 87 )))
88
Clément AUBIN 3.2 89 {{warning}}
Gaetan RETEL 15.7 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.
Clément AUBIN 3.2 91 {{/warning}}
sasportesj 1.1 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
Gaetan RETEL 16.1 99 On modifie le fichier de configuration {{code language="none"}}/etc/puppetlabs/puppet/puppet.conf{{/code}} :
sasportesj 1.1 100
Gaetan RETEL 16.1 101 (% class="box" %)
102 (((
103 {{{[main]
104 server = puppet-prod.prod.infra.atilla.org
105 certname = <server name>.infra.atilla.org}}}
106 )))
107
Gaetan RETEL 15.7 108 On connecte ensuite l'agent au serveur de puppet :
109
sasportesj 1.1 110 {{code language="none"}}
sasportesj 1.2 111 /opt/puppetlabs/bin/puppet ssl bootstrap
sasportesj 1.1 112 {{/code}}
113
Gaetan RETEL 16.1 114 **En  parallèle, sur [[Puppet>>doc:Infrastructure.Puppet.WebHome]]** (puppet.infra.atilla.org, qui fait tourner Openvox) :
sasportesj 1.1 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
sasportesj 1.2 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
Gaetan RETEL 16.2 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
sasportesj 3.1 152 == Si on veut mettre la VM en ligne : ==
sasportesj 1.2 153
Kevin FRICK 15.1 154 **Sur [[Bill>>doc:Infrastructure.Serveurs_physiques.Bill.WebHome]] :**
sasportesj 1.2 155
sasportesj 13.1 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}}
sasportesj 1.2 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
sasportesj 11.1 164 On va ensuite dans /etc/nginx/sites-enabled/<nom de domaine qu'on a choisi> et on crée un lien symbolique :
sasportesj 1.2 165
166 {{code language="none"}}
167 ln -s ../../sites-available/<DNS de la VM>
168 {{/code}}
169
sasportesj 9.1 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
sasportesj 13.1 176 {{info}}
177 Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HMiseenplacedescertificatsSSL"]]
178 {{/info}}
sasportesj 9.1 179
sasportesj 1.2 180
sasportesj 13.1 181
Gaetan RETEL 16.2 182 == ==