Code source wiki de Créer une VM
Version 14.1 par Kevin FRICK le 2024/04/02 01:13
Masquer les derniers auteurs
author | version | line-number | content |
---|---|---|---|
![]() |
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"}} | ||
![]() |
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 |
![]() |
1.1 | 8 | {{/code}} |
9 | |||
![]() |
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 | |||
![]() |
9.1 | 14 | {{warning}} |
15 | Pour le nom de la VM, ne pas oublier d'y ajouter les suffixes -prod, -preprod, -dev... | ||
16 | {{/warning}} | ||
![]() |
1.1 | 17 | |
18 | **Sur Bill **(root@atilla.org depuis l'extérieur, bill.infra.atilla.org depuis l'intérieur du réseau) : | ||
19 | |||
![]() |
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 |
![]() |
1.1 | 21 | |
![]() |
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. |
![]() |
5.1 | 23 | |
![]() |
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}} | ||
![]() |
5.1 | 27 | |
![]() |
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 | |||
37 | **Sur Touffu :** | ||
38 | |||
![]() |
9.1 | 39 | On voit que dans /etc/xen un fichier .cfg a été ajouté automatiquement. |
![]() |
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 | |||
65 | On télécharge ensuite le paquet de puppet, et on l'installe : | ||
66 | |||
67 | {{code language="none"}} | ||
68 | wget https://apt.puppet.com/puppet7-release-<debian version>.deb # exemple de debian version : stretch, buster, ... | ||
69 | dpkg -i <nom du fichier téléchargé>.deb | ||
70 | {{/code}} | ||
71 | |||
![]() |
7.1 | 72 | (% class="box infomessage" %) |
73 | ((( | ||
74 | Pour chercher la version de debian, on peut regarder le contenu du fichier /etc/debian_version | ||
75 | ))) | ||
76 | |||
![]() |
1.1 | 77 | On update ensuite les paquets disponibles, et on installe l'agent puppet : |
78 | |||
79 | {{code language="none"}} | ||
80 | apt-get update | ||
81 | apt-get install puppet-agent | ||
82 | {{/code}} | ||
83 | |||
|
3.2 | 84 | {{warning}} |
85 | 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. | ||
86 | {{/warning}} | ||
![]() |
1.1 | 87 | |
88 | On démarre ensuite le service de puppet : | ||
89 | |||
90 | {{code language="none"}} | ||
91 | /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true | ||
92 | {{/code}} | ||
93 | |||
|
13.2 | 94 | On connecte ensuite l'agent au serveur de puppet : |
![]() |
1.1 | 95 | |
96 | {{code language="none"}} | ||
![]() |
1.2 | 97 | /opt/puppetlabs/bin/puppet ssl bootstrap |
![]() |
1.1 | 98 | {{/code}} |
99 | |||
|
13.2 | 100 | **En parallèle, sur Puppet** (puppet.infra.atilla.org) : |
![]() |
1.1 | 101 | |
102 | Via la commande précédente, un certificat a été créé, que le serveur doit signer pour que les deux machines puissent communiquer. | ||
103 | |||
104 | Pour voir la liste des certificats pas signés : | ||
105 | |||
106 | {{code language="none"}} | ||
107 | puppetserver ca list | ||
108 | {{/code}} | ||
109 | |||
110 | Pour signer un certificat précis : | ||
111 | |||
112 | {{code language="none"}} | ||
113 | puppetserver ca sign --certname <nom de la VM> | ||
114 | {{/code}} | ||
115 | |||
116 | Pour signer tous les certificats pas signés : | ||
117 | |||
![]() |
1.2 | 118 | {{code language="none"}} |
119 | puppetserver ca sign --all | ||
120 | {{/code}} | ||
121 | |||
122 | **Sur la VM :** | ||
123 | |||
124 | Pour vérifier que tout marche bien : | ||
125 | |||
126 | {{code language="none"}} | ||
127 | /opt/puppetlabs/bin/puppet ssl bootstrap | ||
128 | {{/code}} | ||
129 | |||
![]() |
3.1 | 130 | == Si on veut mettre la VM en ligne : == |
![]() |
1.2 | 131 | |
132 | **Sur Bill :** | ||
133 | |||
![]() |
13.1 | 134 | {{info}} |
135 | 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"]] | ||
136 | {{/info}} | ||
![]() |
1.2 | 137 | |
138 | On crée un nouveau fichier dans /etc/nginx pour la VM (on peut copier sur les autres et adapter le nom). | ||
139 | |||
140 | On crée un fichier error.log et un fichier access.log dans /var/log/nginx | ||
141 | |||
![]() |
11.1 | 142 | On va ensuite dans /etc/nginx/sites-enabled/<nom de domaine qu'on a choisi> et on crée un lien symbolique : |
![]() |
1.2 | 143 | |
144 | {{code language="none"}} | ||
145 | ln -s ../../sites-available/<DNS de la VM> | ||
146 | {{/code}} | ||
147 | |||
![]() |
9.1 | 148 | De plus, on ajoute un certificat à l'aide de cette suite de commandes : |
149 | |||
150 | {{code language="none"}} | ||
151 | systemctl stop nginx && certbot certonly -d <DNS de la VM> && systemctl start nginx | ||
152 | {{/code}} | ||
153 | |||
![]() |
13.1 | 154 | {{info}} |
155 | Si vous voulez comprendre ce que vous venez de faire, [[cliquez ici>>Infrastructure.Tutoriels.MiseEnPlaceSousDomaine.WebHome||anchor="HMiseenplacedescertificatsSSL"]] | ||
156 | {{/info}} | ||
![]() |
9.1 | 157 | |
![]() |
1.2 | 158 | |
![]() |
13.1 | 159 | |
![]() |
10.1 | 160 | == == |