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