Projet

Général

Profil

Openstack Installation nouvelle node du cluster » Historique » Version 13

Mehdi Abaakouk, 25/03/2015 00:21

1 1 Mehdi Abaakouk
h1. Openstack Installation nouvelle node du cluster
2 1 Mehdi Abaakouk
3 1 Mehdi Abaakouk
h2. Allocation IPs
4 1 Mehdi Abaakouk
5 1 Mehdi Abaakouk
Sur http://wiki.tetaneutral.net/index.php/Architecture prends des ips dans les réseaux suivant:
6 1 Mehdi Abaakouk
7 1 Mehdi Abaakouk
* 89.234.156.x et 2a01:6600:8083:xx
8 1 Mehdi Abaakouk
* 192.168.3.xx VLAN admin 3175
9 1 Mehdi Abaakouk
* 192.168.128.xx VLAN vPro 128 (port RJ45 de la machine sur untag 128 de switch)
10 1 Mehdi Abaakouk
* 192.168.99.xx VLAN ceph 3199
11 1 Mehdi Abaakouk
12 2 Mehdi Abaakouk
h2. allocation des ports de switch
13 1 Mehdi Abaakouk
14 1 Mehdi Abaakouk
*s4810*
15 1 Mehdi Abaakouk
16 1 Mehdi Abaakouk
Rien à configurer, juste choisir un port libre
17 1 Mehdi Abaakouk
18 1 Mehdi Abaakouk
*s8 ou s9*
19 1 Mehdi Abaakouk
20 2 Mehdi Abaakouk
Choir et configurer un port untag sur le vlan 128
21 1 Mehdi Abaakouk
22 1 Mehdi Abaakouk
h2. Connectique réseau
23 1 Mehdi Abaakouk
24 1 Mehdi Abaakouk
1 cable Fibre de la carte 10G vers le s4810
25 1 Mehdi Abaakouk
1 cable RJ45 de la carte réseau interne (vpro) du PC vers s8 ou s8
26 1 Mehdi Abaakouk
27 1 Mehdi Abaakouk
h2. Configuration DNS
28 1 Mehdi Abaakouk
29 1 Mehdi Abaakouk
Dans le git des zones DNS de ttnn ajouter gX
30 1 Mehdi Abaakouk
31 1 Mehdi Abaakouk
example: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/bind-zones/revisions/582180e9af2f6fc5aaaf0425f7c3e9e87ab2b117
32 1 Mehdi Abaakouk
33 1 Mehdi Abaakouk
h2. Configuration BIOS de la machine
34 1 Mehdi Abaakouk
35 6 Mehdi Abaakouk
Activer 'PowerOn' On 'AC failure'
36 6 Mehdi Abaakouk
Désactiver 'Alarm/Warn when case open' (Hardware Monitorning)
37 6 Mehdi Abaakouk
Activer 'Boot from LAN/Ethernet'
38 6 Mehdi Abaakouk
Mettre SSD en premier pour l'ordre de BOOT
39 6 Mehdi Abaakouk
Activer 'MEBx selection screen' (VPRO bios screen)
40 6 Mehdi Abaakouk
41 6 Mehdi Abaakouk
42 6 Mehdi Abaakouk
43 3 Mehdi Abaakouk
h2. Configuration VPRO de la machine
44 1 Mehdi Abaakouk
45 1 Mehdi Abaakouk
Faire ce paragraphe: https://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/VPro#First-step
46 1 Mehdi Abaakouk
47 1 Mehdi Abaakouk
Puis sur g4:
48 1 Mehdi Abaakouk
49 1 Mehdi Abaakouk
<pre>
50 1 Mehdi Abaakouk
$ ./vpro_enable_vnc 192.168.128.XXX
51 1 Mehdi Abaakouk
...
52 1 Mehdi Abaakouk
# Vérifier qu'il y a pas de rouge (juste du bleu et violet) ainsi que ceci vers la fin:
53 1 Mehdi Abaakouk
...
54 1 Mehdi Abaakouk
      <g:Is5900PortEnabled>true</g:Is5900PortEnabled>
55 1 Mehdi Abaakouk
      <g:OptInPolicy>false</g:OptInPolicy>
56 1 Mehdi Abaakouk
</pre>
57 5 Mehdi Abaakouk
58 5 Mehdi Abaakouk
h2. Préparation configuration réseau
59 5 Mehdi Abaakouk
60 5 Mehdi Abaakouk
Sur g1, ajouter un block avec un les addresses ips dans le fichier /etc/rc.local
61 5 Mehdi Abaakouk
62 5 Mehdi Abaakouk
<pre>
63 5 Mehdi Abaakouk
ceph_disks_manual_activate["g6"]="9ba884f0-55b2-438d-989f-8db2bf9fe0c7"
64 5 Mehdi Abaakouk
vlan3132_ipv4["g6"]="89.234.156.201"
65 5 Mehdi Abaakouk
vlan3132_ipv6["g6"]="2a01:6600:8083:c900::1"
66 5 Mehdi Abaakouk
vlan3175_ipv4["g6"]="192.168.3.109"
67 5 Mehdi Abaakouk
vlan3199_ipv4["g6"]="192.168.99.243"
68 5 Mehdi Abaakouk
</pre>
69 5 Mehdi Abaakouk
70 5 Mehdi Abaakouk
Ajouter la nouvelle machine dans le fichier /etc/hosts:
71 5 Mehdi Abaakouk
72 5 Mehdi Abaakouk
<pre>
73 5 Mehdi Abaakouk
89.234.156.201 g6.tetaneutral.net g6
74 5 Mehdi Abaakouk
</pre>
75 5 Mehdi Abaakouk
76 5 Mehdi Abaakouk
Sur g1, commiter et diffuser le fichier hosts et rc.local sur les autres machines:
77 5 Mehdi Abaakouk
78 5 Mehdi Abaakouk
<pre>
79 5 Mehdi Abaakouk
cd /root/tools
80 5 Mehdi Abaakouk
./sync-rclocal.sh
81 5 Mehdi Abaakouk
</pre>
82 5 Mehdi Abaakouk
83 5 Mehdi Abaakouk
_Note: celui-ci relance la partie réseau du rc.local mais comme la plupart des ips sont déjà configuré plusieur message 'RTNETLINK answers: File exists' apparaissent_
84 7 Mehdi Abaakouk
85 7 Mehdi Abaakouk
h2. Préparation configuration puppet
86 7 Mehdi Abaakouk
87 7 Mehdi Abaakouk
Sur la machine puppet éditer /etc/puppet/manifests/nodes/opentack.pp et ajouter un block pour la nouvelle machine:
88 7 Mehdi Abaakouk
89 7 Mehdi Abaakouk
<pre>
90 7 Mehdi Abaakouk
node "gX.tetaneutral.net" inherits openstack_node_common {
91 7 Mehdi Abaakouk
  # Configuration du routerid et de l'AS number de cette machine
92 7 Mehdi Abaakouk
  # Il faut aussi mettre la conf bgp de h7 ainsi que les fichiers 
93 7 Mehdi Abaakouk
  # /etc/puppet/manifests/files/openstack/bird.conf.erb et
94 7 Mehdi Abaakouk
  # /etc/puppet/manifests/files/openstack/bird6.conf.erb
95 7 Mehdi Abaakouk
  # pour ajouter cette AS interne
96 7 Mehdi Abaakouk
  ttnn_os_bird {'198.51.100.1': asnum => "65008"}
97 7 Mehdi Abaakouk
98 7 Mehdi Abaakouk
  # Dans le cas d'une moniteur ceph, mais uniquement 3 suffissent, on a déjà g1,g2,g3
99 7 Mehdi Abaakouk
  ttnn_ceph_mon {$::hostname:}
100 7 Mehdi Abaakouk
  # Sinon utilisait:
101 7 Mehdi Abaakouk
  # class{"ttnn_ceph_osd_only": }
102 7 Mehdi Abaakouk
103 7 Mehdi Abaakouk
  # La partie Openstack, l'uuid doit être unique par machine (générer avec uuid-gen)
104 7 Mehdi Abaakouk
  ttnn_os_compute {"9d26ec10-XXXX-XXXX-XXXX-f10ed16d270f": }
105 7 Mehdi Abaakouk
}
106 7 Mehdi Abaakouk
</pre>
107 7 Mehdi Abaakouk
108 7 Mehdi Abaakouk
Puis dans le fichier /etc/puppet/manifests/files/openstack/bird.conf.erb ajouter un nouveau protocol avec le router id choisi au dessus:
109 7 Mehdi Abaakouk
110 7 Mehdi Abaakouk
<pre>
111 7 Mehdi Abaakouk
<% if asnum != "65008" %>
112 7 Mehdi Abaakouk
protocol bgp OPENSTACK_G6 from mesh_bgp{
113 7 Mehdi Abaakouk
         neighbor 89.234.156.201 as 65008;
114 7 Mehdi Abaakouk
}
115 7 Mehdi Abaakouk
<% end -%>
116 7 Mehdi Abaakouk
</pre>
117 7 Mehdi Abaakouk
118 7 Mehdi Abaakouk
Puis dans le fichier /etc/puppet/manifests/files/openstack/bird6.conf.erb ajouter un nouveau protocol avec le router id choisi au dessus:
119 7 Mehdi Abaakouk
120 7 Mehdi Abaakouk
<pre>
121 7 Mehdi Abaakouk
<% if asnum != "65008" %>
122 7 Mehdi Abaakouk
protocol bgp OPENSTACK_G6 from mesh_bgp{
123 7 Mehdi Abaakouk
         neighbor 2a01:6600:8083:c900::1 as 65008;
124 7 Mehdi Abaakouk
}
125 7 Mehdi Abaakouk
<% end -%>
126 7 Mehdi Abaakouk
</pre>
127 7 Mehdi Abaakouk
128 9 Mehdi Abaakouk
h2. Préparation du routage sur h7
129 9 Mehdi Abaakouk
130 9 Mehdi Abaakouk
Dans /etc/rc.local chercher le block 'CEPH / OPENSTACK' et ajouter les routes, example:
131 9 Mehdi Abaakouk
132 9 Mehdi Abaakouk
<pre>
133 9 Mehdi Abaakouk
ip route add 89.234.156.201/32 dev eth0.3132
134 9 Mehdi Abaakouk
ip route add 2a01:6600:8083:c900::/56 dev eth0.3132
135 9 Mehdi Abaakouk
</pre>
136 9 Mehdi Abaakouk
137 9 Mehdi Abaakouk
Executer ces nouvelles lignes manuellement sur h7
138 9 Mehdi Abaakouk
139 9 Mehdi Abaakouk
Puis dans /etc/bird/bird.conf
140 9 Mehdi Abaakouk
141 9 Mehdi Abaakouk
<pre>
142 9 Mehdi Abaakouk
protocol bgp OPENSTACK_G6 from mesh_openstack {
143 9 Mehdi Abaakouk
        neighbor 89.234.156.201 as 65008;
144 9 Mehdi Abaakouk
}
145 9 Mehdi Abaakouk
</pre>
146 9 Mehdi Abaakouk
147 9 Mehdi Abaakouk
et dans /etc/bird/bird6.conf:
148 9 Mehdi Abaakouk
149 9 Mehdi Abaakouk
<pre>
150 9 Mehdi Abaakouk
protocol bgp OPENSTACK_G6 from mesh_openstack {
151 9 Mehdi Abaakouk
        neighbor 2a01:6600:8083:c900::1 as 65008;
152 9 Mehdi Abaakouk
}
153 9 Mehdi Abaakouk
</pre>
154 9 Mehdi Abaakouk
155 9 Mehdi Abaakouk
Reload de bird et bird6:
156 9 Mehdi Abaakouk
157 9 Mehdi Abaakouk
<pre>
158 9 Mehdi Abaakouk
birdc conf
159 9 Mehdi Abaakouk
birdc6 conf
160 9 Mehdi Abaakouk
</pre>
161 9 Mehdi Abaakouk
162 9 Mehdi Abaakouk
163 9 Mehdi Abaakouk
164 9 Mehdi Abaakouk
165 7 Mehdi Abaakouk
h2. Installation de debian sur la nouvelle machine
166 8 Mehdi Abaakouk
167 8 Mehdi Abaakouk
h3. Example de mon (sileht) setup pour faire l'installation:
168 8 Mehdi Abaakouk
169 8 Mehdi Abaakouk
<pre>
170 8 Mehdi Abaakouk
/etc/network/interfaces
171 8 Mehdi Abaakouk
auto eth0
172 8 Mehdi Abaakouk
iface eth0 inet static
173 8 Mehdi Abaakouk
  address 192.168.0.1
174 8 Mehdi Abaakouk
  netmask 255.255.255.0
175 8 Mehdi Abaakouk
176 8 Mehdi Abaakouk
/etc/dnsmasq.d/local.conf 
177 8 Mehdi Abaakouk
interface=eth0
178 8 Mehdi Abaakouk
domain=tetaneutral.net
179 8 Mehdi Abaakouk
dhcp-range=192.168.0.3,192.168.0.253,255.255.255.0,1h
180 8 Mehdi Abaakouk
dhcp-boot=pxelinux.0,pxeserver,192.168.0.1
181 8 Mehdi Abaakouk
dhcp-option=option:router,192.168.0.1
182 8 Mehdi Abaakouk
pxe-service=x86PC, "Install Linux", pxelinux
183 8 Mehdi Abaakouk
enable-tftp
184 8 Mehdi Abaakouk
tftp-root=/srv/tftp
185 8 Mehdi Abaakouk
</pre>
186 8 Mehdi Abaakouk
187 8 Mehdi Abaakouk
Activer le routage et masquerade:
188 8 Mehdi Abaakouk
189 8 Mehdi Abaakouk
<pre>
190 8 Mehdi Abaakouk
echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
191 8 Mehdi Abaakouk
sudo iptables -t nat -A POSTROUTING -s "192.168.0.0/24" ! -d "192.168.0.0/24" -j MASQUERADE
192 8 Mehdi Abaakouk
</pre>
193 8 Mehdi Abaakouk
194 8 Mehdi Abaakouk
Script pour download l'installeur PXE debian (sans firmware) /srv/tftp/dl.sh:
195 8 Mehdi Abaakouk
<pre>
196 8 Mehdi Abaakouk
#!/bin/bash -x
197 8 Mehdi Abaakouk
198 8 Mehdi Abaakouk
YOURMIRROR=ftp.fr.debian.org
199 8 Mehdi Abaakouk
ARCH=amd64
200 8 Mehdi Abaakouk
DIST=jessie
201 8 Mehdi Abaakouk
mkdir -p /srv/tftp
202 8 Mehdi Abaakouk
cd /srv/tftp
203 8 Mehdi Abaakouk
204 8 Mehdi Abaakouk
rm -rf netboot.tar.gz Release* SHA* debian-installer version.info pxelinux.0 pxelinux.cfg ldlinux.c32
205 8 Mehdi Abaakouk
wget -q http://"$YOURMIRROR"/debian/dists/${DIST}/main/installer-"$ARCH"/current/images/netboot/netboot.tar.gz
206 8 Mehdi Abaakouk
wget -q http://"$YOURMIRROR"/debian/dists/${DIST}/main/installer-"$ARCH"/current/images/SHA256SUMS
207 8 Mehdi Abaakouk
wget -q http://"$YOURMIRROR"/debian/dists/${DIST}/Release
208 8 Mehdi Abaakouk
wget -q http://"$YOURMIRROR"/debian/dists/${DIST}/Release.gpg
209 8 Mehdi Abaakouk
tar -xzf netboot.tar.gz
210 8 Mehdi Abaakouk
</pre>
211 8 Mehdi Abaakouk
212 8 Mehdi Abaakouk
Je remplace provisoirement le cable du vpro par un cable entre mon PC et ce port. 
213 8 Mehdi Abaakouk
214 8 Mehdi Abaakouk
h3. Installation de l'OS
215 8 Mehdi Abaakouk
216 8 Mehdi Abaakouk
Date: CET (Europe/France/Paris)
217 8 Mehdi Abaakouk
Locale: Etat Unis (en_US.UTF-8)
218 8 Mehdi Abaakouk
Clavier: FR
219 8 Mehdi Abaakouk
Partitionement: une seul partition bootable en ext4 de 20G sur le SSD pour /
220 8 Mehdi Abaakouk
Packages: système minimal avec SSH
221 8 Mehdi Abaakouk
222 10 Mehdi Abaakouk
h3. Configuration manuelle (non puppetizé) de l'OS
223 8 Mehdi Abaakouk
224 8 Mehdi Abaakouk
<pre>
225 8 Mehdi Abaakouk
$ apt-get update
226 8 Mehdi Abaakouk
$ apt-get dist-upgrade
227 8 Mehdi Abaakouk
$ apt-get install sysvinit-core systemd-shim
228 8 Mehdi Abaakouk
  # reboot
229 8 Mehdi Abaakouk
$ apt-get purge systemd
230 8 Mehdi Abaakouk
</pre>
231 8 Mehdi Abaakouk
232 8 Mehdi Abaakouk
Editer /etc/udev/rules.d/70-persistent-net.rules et mettre avoir:
233 8 Mehdi Abaakouk
* les ixgbe en eth0 (celui avec le cable branché) et eth1
234 8 Mehdi Abaakouk
* la e1000e en eth2
235 8 Mehdi Abaakouk
236 8 Mehdi Abaakouk
Installation configuration de openvswitch
237 8 Mehdi Abaakouk
238 8 Mehdi Abaakouk
<pre>
239 8 Mehdi Abaakouk
apt-get install openvswitch-switch 
240 8 Mehdi Abaakouk
modprobe vhost-net
241 8 Mehdi Abaakouk
modprobe tun
242 8 Mehdi Abaakouk
243 8 Mehdi Abaakouk
# On créé un switch br-eth0
244 8 Mehdi Abaakouk
ovs-vsctl add-br br-eth0
245 8 Mehdi Abaakouk
# On rajoute une petite bricole pour openstack 
246 8 Mehdi Abaakouk
ovs-vsctl br-set-external-id br-eth0 bridge-id br-eth0
247 8 Mehdi Abaakouk
# On ajoute le port eth0 dans le switch
248 8 Mehdi Abaakouk
ovs-vsctl add-port br-eth0 eth0  # Si aucun trunk vlan n'est spécifié, c'est un trunk avec tous les vlans 
249 8 Mehdi Abaakouk
250 8 Mehdi Abaakouk
# On créé des interfaces réseau utilisable sur la machine avec des vlans:
251 8 Mehdi Abaakouk
ovs-vsctl add-br vlan3132 br-eth0 3132
252 8 Mehdi Abaakouk
ovs-vsctl add-br vlan3175 br-eth0 3175
253 8 Mehdi Abaakouk
ovs-vsctl add-br vlan3199 br-eth0 3199
254 8 Mehdi Abaakouk
255 8 Mehdi Abaakouk
# On s'assure que eth0 sera toujours up
256 8 Mehdi Abaakouk
ovs-ofctl mod-port br-eth0 eth0 up
257 8 Mehdi Abaakouk
</pre>
258 8 Mehdi Abaakouk
259 8 Mehdi Abaakouk
Copier le fichier /etc/hosts et /etc/rc.local à partir de g1 et supprimer la configuration des ethX du fichier /etc/network/interfaces
260 8 Mehdi Abaakouk
261 8 Mehdi Abaakouk
<pre>
262 8 Mehdi Abaakouk
reboot
263 8 Mehdi Abaakouk
</pre>
264 8 Mehdi Abaakouk
265 8 Mehdi Abaakouk
Vérifier que tous les réseaux ping correctement.
266 8 Mehdi Abaakouk
267 1 Mehdi Abaakouk
(remettre le cable vpro si besoin)
268 10 Mehdi Abaakouk
269 10 Mehdi Abaakouk
h2. Configuration via puppet
270 10 Mehdi Abaakouk
271 10 Mehdi Abaakouk
Sur la nouvelle machine:
272 10 Mehdi Abaakouk
273 10 Mehdi Abaakouk
<pre>
274 10 Mehdi Abaakouk
$ apt-get install puppet
275 10 Mehdi Abaakouk
$ puppet agent --enable
276 10 Mehdi Abaakouk
$ puppet agent -vt --server puppet.tetaneutral.net --certname g6.tetaneutral.net --pluginsync 
277 10 Mehdi Abaakouk
Info: Caching certificate for ca
278 10 Mehdi Abaakouk
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
279 10 Mehdi Abaakouk
Info: Creating a new SSL certificate request for g6.tetaneutral.net
280 10 Mehdi Abaakouk
Info: Certificate Request fingerprint (SHA256): AE:72:47:40:A0:E2:F4:59:BA:39:FA:3D:C2:A7:C9:1B:9F:87:A5:B7:65:3A:F9:D4:DE:AF:E2:A3:02:41:0F:2E
281 10 Mehdi Abaakouk
Info: Caching certificate for ca
282 10 Mehdi Abaakouk
Exiting; no certificate found and waitforcert is disabled
283 10 Mehdi Abaakouk
</pre>
284 10 Mehdi Abaakouk
285 10 Mehdi Abaakouk
Sur le puppetmaster:
286 10 Mehdi Abaakouk
287 10 Mehdi Abaakouk
<pre>
288 10 Mehdi Abaakouk
$ puppet ca sign g6.tetaneutral.net 
289 10 Mehdi Abaakouk
</pre>
290 10 Mehdi Abaakouk
291 10 Mehdi Abaakouk
<pre>
292 10 Mehdi Abaakouk
$ puppet agent -vt --server puppet.tetaneutral.net --certname g6.tetaneutral.net --pluginsync 
293 10 Mehdi Abaakouk
$ puppet agent -vt --server puppet.tetaneutral.net --certname g6.tetaneutral.net --pluginsync 
294 10 Mehdi Abaakouk
$ puppet agent -vt --server puppet.tetaneutral.net --certname g6.tetaneutral.net --pluginsync 
295 10 Mehdi Abaakouk
</pre>
296 10 Mehdi Abaakouk
297 10 Mehdi Abaakouk
Il ne doit plus y avoir d'erreur la 3°/4° fois.
298 10 Mehdi Abaakouk
299 1 Mehdi Abaakouk
Petit fix temporaire pour la conf de libvirt:
300 11 Mehdi Abaakouk
* taper la commande suivante sur g1 pour récuperer le clé ceph de libvirt: 
301 11 Mehdi Abaakouk
<pre>virsh secret-get-value 1fe74663-8dfa-486c-bb80-3bd94c90c967</pre>
302 11 Mehdi Abaakouk
* la mettre sur la nouvelle machine: <pre>virsh secret-set-value 1fe74663-8dfa-486c-bb80-3bd94c90c967 'BLABLABLA'</pre>
303 12 Mehdi Abaakouk
304 12 Mehdi Abaakouk
305 12 Mehdi Abaakouk
h2. Nagios:
306 12 Mehdi Abaakouk
307 12 Mehdi Abaakouk
ajouter la machine dans nagios, prendre example sur une autre machine du même genre (openstack+osd ou openstack+osd+mon)
308 12 Mehdi Abaakouk
309 12 Mehdi Abaakouk
h2. Vérification:
310 12 Mehdi Abaakouk
311 12 Mehdi Abaakouk
<pre>
312 13 Mehdi Abaakouk
$ nova service-list | grep g6
313 12 Mehdi Abaakouk
| 12 | nova-compute     | g6        | nova     | enabled | up    | 2015-03-24T23:17:25.000000 | None            |
314 12 Mehdi Abaakouk
</pre>
315 12 Mehdi Abaakouk
316 12 Mehdi Abaakouk
Doit y avoir la nouvelle machine 'up' et 'enabled'
317 12 Mehdi Abaakouk
318 12 Mehdi Abaakouk
<pre>
319 13 Mehdi Abaakouk
$ neutron agent-list | grep g6
320 12 Mehdi Abaakouk
| 4dfd58c4-4959-423a-9c9e-2eb31c75f04b | Open vSwitch agent | g6        | :-)   | True           | neutron-openvswitch-agent |
321 12 Mehdi Abaakouk
| b5733323-9eff-4956-8b8e-4a5764ff7987 | Linux Routed Agent | g6        | :-)   | True           | neutron-linuxrouted-agent |
322 12 Mehdi Abaakouk
</pre>
323 12 Mehdi Abaakouk
324 12 Mehdi Abaakouk
Doit y avoir 2 fois la machine 'alive :-)' et admin_state_up True, 1 fois pour neutron-linuxrouted-agent et 1 fois neutron-openvswitch-agent
325 12 Mehdi Abaakouk
326 12 Mehdi Abaakouk
h2. Ajouter les disks/OSDs pour ceph:
327 12 Mehdi Abaakouk
328 12 Mehdi Abaakouk
[[Openstack_Installation_TTNN#Cas-général-un-disque-entier]]