Code source wiki de Créer une VM

Version 12.1 par sasportesj le 2021/04/18 11:08

Masquer les derniers auteurs
sasportesj 1.1 1 **Sur Touffu** (touffu.infra.atilla.org) :
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
sasportesj 9.1 10 {{warning}}
11 Pour le nom de la VM, ne pas oublier d'y ajouter les suffixes -prod, -preprod, -dev...
12 {{/warning}}
sasportesj 1.1 13
14 **Sur Bill **(root@atilla.org depuis l'extérieur, bill.infra.atilla.org depuis l'intérieur du réseau) :
15
16
sasportesj 5.1 17 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 18
sasportesj 11.1 19 //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 20
sasportesj 12.1 21 {{info}}
22 Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HIdE9egE9nE9rale"]]
23 {{/info}}
sasportesj 5.1 24
sasportesj 12.1 25
sasportesj 1.1 26 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.
27
28
29 Ensuite, on restart le système avec :
30
31 {{code language="none"}}
32 systemctl restart isc-dhcp-server.service # pour restart le DHCP
33 systemctl restart bind9 # pour restart le DNS
34 {{/code}}
35
36
37 **Sur Touffu :**
38
39
sasportesj 9.1 40 On voit que dans /etc/xen un fichier .cfg a été ajouté automatiquement.
sasportesj 1.1 41
42 Dans /etc/xen/auto, on crée un lien symbolique pour notre VM :
43
44 {{code language="none"}}
45 ln -s ../<nom de la VM>.cfg
46 {{/code}}
47
48 On crée ensuite la machine et on se rend sur son interface :
49
50 {{code language="none"}}
51 xl create -c <nom de la VM>.cfg
52 {{/code}}
53
54 **Sur la VM :**
55
56
57 login : root
58
59 mdp : celui que vous avez mis quand vous avez créé votre VM
60
61
62 Maintenant qu'on est sur l'interface de notre VM, on installe la base (vim et wget pour installer puppet) :
63
64 {{code language="none"}}
65 apt install vim wget
66 {{/code}}
67
68 On télécharge ensuite le paquet de puppet, et on l'installe :
69
70 {{code language="none"}}
71 wget https://apt.puppet.com/puppet7-release-<debian version>.deb # exemple de debian version : stretch, buster, ...
72 dpkg -i <nom du fichier téléchargé>.deb
73 {{/code}}
74
sasportesj 7.1 75 (% class="box infomessage" %)
76 (((
77 Pour chercher la version de debian, on peut regarder le contenu du fichier /etc/debian_version
78 )))
79
sasportesj 1.1 80 On update ensuite les paquets disponibles, et on installe l'agent puppet :
81
82 {{code language="none"}}
83 apt-get update
84 apt-get install puppet-agent
85 {{/code}}
86
Clément AUBIN 3.2 87 {{warning}}
88 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.
89 {{/warning}}
sasportesj 1.1 90
91 On démarre ensuite le service de puppet :
92
93 {{code language="none"}}
94 /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
95 {{/code}}
96
97 On connecte ensuite l'agent au serveur de puppet (à ce jour Milou) :
98
99 {{code language="none"}}
sasportesj 1.2 100 /opt/puppetlabs/bin/puppet ssl bootstrap
sasportesj 1.1 101 {{/code}}
102
103 **En  parallèle, sur Milou** (milou.infra.atilla.org) :
104
105 Via la commande précédente, un certificat a été créé, que le serveur doit signer pour que les deux machines puissent communiquer.
106
107 Pour voir la liste des certificats pas signés :
108
109 {{code language="none"}}
110 puppetserver ca list
111 {{/code}}
112
113 Pour signer un certificat précis :
114
115 {{code language="none"}}
116 puppetserver ca sign --certname <nom de la VM>
117 {{/code}}
118
119 Pour signer tous les certificats pas signés :
120
sasportesj 1.2 121 {{code language="none"}}
122 puppetserver ca sign --all
123 {{/code}}
124
125 **Sur la VM :**
126
127
128 Pour vérifier que tout marche bien :
129
130 {{code language="none"}}
131 /opt/puppetlabs/bin/puppet ssl bootstrap
132 {{/code}}
133
sasportesj 3.1 134 == Si on veut mettre la VM en ligne : ==
sasportesj 1.2 135
136
137 **Sur Bill :**
138
139
140 On crée un nouveau fichier dans /etc/nginx pour la VM (on peut copier sur les autres et adapter le nom).
141
142 On crée un fichier error.log et un fichier access.log dans /var/log/nginx
143
sasportesj 11.1 144 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 145
146 {{code language="none"}}
147 ln -s ../../sites-available/<DNS de la VM>
148 {{/code}}
149
sasportesj 9.1 150 De plus, on ajoute un certificat à l'aide de cette suite de commandes :
151
152 {{code language="none"}}
153 systemctl stop nginx && certbot certonly -d <DNS de la VM> && systemctl start nginx
154 {{/code}}
155
156
sasportesj 1.2 157
sasportesj 10.1 158 == ==