Projet

Général

Profil

Openstack Management TTNN » Historique » Version 138

knarx knarx, 23/04/2020 11:53
ajout exemple with-disk

1 3 Mehdi Abaakouk
{{>toc}}
2 3 Mehdi Abaakouk
3 1 Mehdi Abaakouk
h1. Openstack Management TTNN
4 1 Mehdi Abaakouk
5 63 Mehdi Abaakouk
h2. Liens
6 1 Mehdi Abaakouk
7 117 Guilhem Saurel
* [[HOWTO add a VM]]
8 63 Mehdi Abaakouk
* [[Management_Cluster_Ceph]]
9 63 Mehdi Abaakouk
* [[Openstack Setup VM pas dans openstack]]
10 63 Mehdi Abaakouk
* [[Openstack Installation nouvelle node du cluster]]
11 63 Mehdi Abaakouk
* [[Openstack Installation TTNN]]
12 63 Mehdi Abaakouk
* "Openstack tools for ttnn":/projects/git-tetaneutral-net/repository/openstack-tools
13 117 Guilhem Saurel
14 11 Mehdi Abaakouk
15 54 Laurent GUERBY
h2. Avant toute operation Openstack
16 54 Laurent GUERBY
17 54 Laurent GUERBY
*Tres important* avant toute operation Openstack lancer sur g1 :
18 54 Laurent GUERBY
19 54 Laurent GUERBY
<pre>
20 54 Laurent GUERBY
root@g1:~# tools/os-overview.sh 
21 54 Laurent GUERBY
</pre>
22 54 Laurent GUERBY
23 54 Laurent GUERBY
Si une ligne n'est pas OK relancer le composant et relancer os-overview.
24 54 Laurent GUERBY
25 72 Mehdi Abaakouk
h2. Création VMs
26 72 Mehdi Abaakouk
27 116 Guilhem Saurel
Cf. [[HOWTO add a VM]]
28 116 Guilhem Saurel
29 72 Mehdi Abaakouk
Example d'un VM sur ssd avec 2 disques (hard) additionels de 500G
30 72 Mehdi Abaakouk
31 72 Mehdi Abaakouk
<pre>
32 100 Mehdi Abaakouk
$ openstack ttnn create --ip <ipv4> --ssd --disk-size 20 --flavor 1vcpu-1024ram --image debian-stretch-scsi <name>.tetaneutral.net
33 72 Mehdi Abaakouk
$ openstack volume create --type ceph --size 500 <name>.tetaneutral.net-disk-1
34 72 Mehdi Abaakouk
$ openstack volume create --type ceph --size 500 <name>.tetaneutral.net-disk-2
35 72 Mehdi Abaakouk
$ openstack server add volume <name>.tetaneutral.net <name>.tetaneutral.net-disk-1
36 72 Mehdi Abaakouk
$ openstack server add volume <name>.tetaneutral.net <name>.tetaneutral.net-disk-2
37 72 Mehdi Abaakouk
</pre>
38 72 Mehdi Abaakouk
39 72 Mehdi Abaakouk
Ensuite dans la VM:
40 72 Mehdi Abaakouk
41 72 Mehdi Abaakouk
<pre>
42 72 Mehdi Abaakouk
mkfs.ext4 -E nodiscard /dev/sdb
43 72 Mehdi Abaakouk
mkfs.ext4 -E nodiscard /dev/sdc
44 72 Mehdi Abaakouk
tune2fs -c 0 -i 0 -m 0 /dev/sdb
45 72 Mehdi Abaakouk
tune2fs -c 0 -i 0 -m 0 /dev/sdc
46 72 Mehdi Abaakouk
</pre>
47 72 Mehdi Abaakouk
48 72 Mehdi Abaakouk
/!\ Ne pas mettre nodiscard pour les SSDs /!\
49 72 Mehdi Abaakouk
50 1 Mehdi Abaakouk
h2. Opération sur les VMs (des membres)
51 46 Mehdi Abaakouk
52 46 Mehdi Abaakouk
h3. Console série
53 46 Mehdi Abaakouk
54 46 Mehdi Abaakouk
Dans la VM, pour systemd:
55 46 Mehdi Abaakouk
56 1 Mehdi Abaakouk
<pre>
57 72 Mehdi Abaakouk
$ systemctl enable serial-getty@ttyS0.service
58 46 Mehdi Abaakouk
$ systemctl start serial-getty@ttyS0.service
59 46 Mehdi Abaakouk
</pre>
60 46 Mehdi Abaakouk
61 46 Mehdi Abaakouk
Dans la VM, pour sysv
62 46 Mehdi Abaakouk
63 46 Mehdi Abaakouk
<pre>
64 46 Mehdi Abaakouk
$ cat >> /etc/inittab <<EOF
65 46 Mehdi Abaakouk
T2:2345:respawn:/sbin/getty ttyS0 115200 vt102
66 46 Mehdi Abaakouk
EOF
67 46 Mehdi Abaakouk
$ init q
68 46 Mehdi Abaakouk
</pre>
69 46 Mehdi Abaakouk
70 46 Mehdi Abaakouk
Sur g1:
71 46 Mehdi Abaakouk
72 46 Mehdi Abaakouk
<pre>
73 73 Mehdi Abaakouk
$ openstack ttnn log ns2.tetaneutral.net
74 46 Mehdi Abaakouk
75 46 Mehdi Abaakouk
Debian GNU/Linux 8 ns2 ttyS0
76 46 Mehdi Abaakouk
ns2 login:
77 46 Mehdi Abaakouk
</pre>
78 46 Mehdi Abaakouk
79 17 Mehdi Abaakouk
h3. Voir la console graphique sans spice-html5:
80 17 Mehdi Abaakouk
81 114 Matthieu Herrb
Copier le script suivant 'gvnc' sur sa machine:
82 17 Mehdi Abaakouk
83 17 Mehdi Abaakouk
<pre>
84 17 Mehdi Abaakouk
#!/bin/bash
85 17 Mehdi Abaakouk
vm=$1
86 17 Mehdi Abaakouk
info=($(ssh openstack.tetaneutral.net -p 2222 -l root -- "mysql nova --skip-column-names --batch -e 'select host, uuid from instances where display_name=\"$vm\";'"))
87 17 Mehdi Abaakouk
88 17 Mehdi Abaakouk
if [ "${info[0]}" == "mysql" ]; then
89 17 Mehdi Abaakouk
    echo "Error in mysql request"
90 17 Mehdi Abaakouk
    exit 1
91 17 Mehdi Abaakouk
fi
92 17 Mehdi Abaakouk
93 17 Mehdi Abaakouk
hypervisor=${info[0]}.tetaneutral.net
94 17 Mehdi Abaakouk
uuid=${info[1]}
95 17 Mehdi Abaakouk
spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${uuid} | awk -F: '{print $3}')
96 17 Mehdi Abaakouk
97 17 Mehdi Abaakouk
echo "$vm on $hypervisor port $spice_port"
98 17 Mehdi Abaakouk
ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} &
99 17 Mehdi Abaakouk
pid=$!
100 17 Mehdi Abaakouk
101 17 Mehdi Abaakouk
102 17 Mehdi Abaakouk
cleanup(){
103 17 Mehdi Abaakouk
    kill $pid
104 17 Mehdi Abaakouk
}
105 17 Mehdi Abaakouk
106 17 Mehdi Abaakouk
trap cleanup EXIT
107 17 Mehdi Abaakouk
108 17 Mehdi Abaakouk
sleep 2
109 17 Mehdi Abaakouk
remote-viewer spice://localhost:5910/
110 17 Mehdi Abaakouk
</pre>
111 17 Mehdi Abaakouk
112 17 Mehdi Abaakouk
Puis 
113 17 Mehdi Abaakouk
114 17 Mehdi Abaakouk
<pre>
115 1 Mehdi Abaakouk
sudo apt-get install virt-viewer
116 1 Mehdi Abaakouk
./gvnc puppet.openstack.net
117 17 Mehdi Abaakouk
</pre>
118 17 Mehdi Abaakouk
119 17 Mehdi Abaakouk
h3. Reboot VM en error
120 17 Mehdi Abaakouk
121 1 Mehdi Abaakouk
<pre>
122 73 Mehdi Abaakouk
openstack server set --state active xxx.tetaneutral.net
123 73 Mehdi Abaakouk
openstack server reboot --hard --wait xxx.tetaneutral.net
124 1 Mehdi Abaakouk
</pre>
125 1 Mehdi Abaakouk
126 1 Mehdi Abaakouk
h3. Shutdown une VM
127 6 Laurent GUERBY
128 5 Laurent GUERBY
<pre>
129 73 Mehdi Abaakouk
openstack server stop xxx.tetaneutral.net
130 1 Mehdi Abaakouk
</pre>
131 1 Mehdi Abaakouk
132 5 Laurent GUERBY
A noter que suspend fait une sauvegarde de la RAM comme sur un laptop. shelve est bugué ne pas utiliser.
133 5 Laurent GUERBY
134 5 Laurent GUERBY
h3. Effacer une VM
135 5 Laurent GUERBY
136 1 Mehdi Abaakouk
<pre>
137 73 Mehdi Abaakouk
openstack ttnn delete xxx.tetaneutral.net
138 1 Mehdi Abaakouk
</pre>
139 1 Mehdi Abaakouk
140 73 Mehdi Abaakouk
Cette commande lance la suppression de la VM et des ces interfaces réseaux.
141 73 Mehdi Abaakouk
"--with-disk" peut être ajouter pour supprimer TOUT les disques de cette VM.
142 73 Mehdi Abaakouk
143 138 knarx knarx
<pre>
144 138 knarx knarx
openstack ttnn delete --with-disk xxx.tetaneutral.net
145 138 knarx knarx
</pre>
146 138 knarx knarx
147 111 Laurent GUERBY
h3. Changer CPU RAM
148 111 Laurent GUERBY
149 111 Laurent GUERBY
<pre>
150 112 Laurent GUERBY
openstack server resize --flavor 2vcpu-2048ram VMNAME.tetaneutral.net # will stop VMNAME then start VMNAME on a new KVM
151 112 Laurent GUERBY
openstack server resize --confirm VMNAME.tetaneutral.net # get rid of freezed KVM
152 111 Laurent GUERBY
153 111 Laurent GUERBY
# openstack flavor list
154 111 Laurent GUERBY
</pre>
155 111 Laurent GUERBY
156 1 Mehdi Abaakouk
h3. Disques de VM
157 7 Laurent GUERBY
158 7 Laurent GUERBY
Pour renommer (et permettre a boot-disk de recreer) ou effacer :
159 7 Laurent GUERBY
160 7 Laurent GUERBY
<pre>
161 73 Mehdi Abaakouk
openstack volume list
162 73 Mehdi Abaakouk
openstack volume set xxx.tetaneutral.net-bootdisk-old --name xxx.tetaneutral.net-bootdisk-new
163 73 Mehdi Abaakouk
openstack volume delete <ID_or_Name>
164 6 Laurent GUERBY
</pre>
165 5 Laurent GUERBY
166 52 Mehdi Abaakouk
h3. Offline fsck
167 52 Mehdi Abaakouk
168 52 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
169 52 Mehdi Abaakouk
<pre>
170 73 Mehdi Abaakouk
# openstack server stop VMNAME.tetaneutral.net
171 73 Mehdi Abaakouk
# openstack server show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
172 52 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
173 52 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
174 52 Mehdi Abaakouk
</pre>
175 52 Mehdi Abaakouk
176 52 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis:
177 52 Mehdi Abaakouk
<pre>
178 52 Mehdi Abaakouk
# guestfish -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0
179 52 Mehdi Abaakouk
><fs> run
180 52 Mehdi Abaakouk
><fs> list-filesystems
181 52 Mehdi Abaakouk
/dev/sda: iso9660
182 52 Mehdi Abaakouk
/dev/sdb1: ext4
183 52 Mehdi Abaakouk
><fs> e2fsck-f /dev/sdb1
184 64 Laurent GUERBY
185 64 Laurent GUERBY
# ou 
186 64 Laurent GUERBY
e2fsck /dev/sdb1 forceall:true
187 52 Mehdi Abaakouk
</pre>
188 52 Mehdi Abaakouk
189 58 Laurent GUERBY
Ou bien sur la machine qui host la VM :
190 57 Mehdi Abaakouk
191 57 Mehdi Abaakouk
<pre>
192 57 Mehdi Abaakouk
# virt-rescue 918e0ec7-0909-423c-9a67-15b5ef7c7ae0
193 58 Laurent GUERBY
><rescue> fsck -a /dev/sdb1
194 57 Mehdi Abaakouk
</pre>
195 57 Mehdi Abaakouk
196 52 Mehdi Abaakouk
Si le fsck returns une erreur, c'est donc un probleme un peu plus grave on peut faire:
197 52 Mehdi Abaakouk
198 52 Mehdi Abaakouk
<pre>
199 74 Mehdi Abaakouk
><fs> e2fsck -y /dev/sdb1
200 52 Mehdi Abaakouk
</pre>
201 1 Mehdi Abaakouk
202 52 Mehdi Abaakouk
h3. Ajout d'un disque
203 68 Mehdi Abaakouk
204 1 Mehdi Abaakouk
Note: Si la VM vient juste d'être créé bien attendre qu'elle est fini son premier boot avant ! Sinon sda et sdb sont inversé (Oui oui, merci nova...).
205 68 Mehdi Abaakouk
206 68 Mehdi Abaakouk
<pre>
207 68 Mehdi Abaakouk
openstack volume create --type ceph --size 1000 --image debian-jessie-scsi zorun.tetaneutral.net-disk-1
208 68 Mehdi Abaakouk
openstack server add volume zorun.tetaneutral.net zorun.tetaneutral.net-disk-1
209 68 Mehdi Abaakouk
</pre>
210 68 Mehdi Abaakouk
211 69 Mehdi Abaakouk
Puis dans la VM
212 69 Mehdi Abaakouk
213 69 Mehdi Abaakouk
<pre>
214 69 Mehdi Abaakouk
mkfs.ext4 /dev/sdb
215 69 Mehdi Abaakouk
tune2fs -m 0 -i 0 -c 0 /dev/sdb
216 69 Mehdi Abaakouk
</pre>
217 68 Mehdi Abaakouk
218 126 Fabien ADAM
h3. Agrandissement d'un disque
219 126 Fabien ADAM
220 126 Fabien ADAM
_Valable depuis Openstack Ocata and ceph jewel_. Validé également sur Openstack Queen fin 2019.
221 68 Mehdi Abaakouk
222 95 Mehdi Abaakouk
<pre>
223 94 Mehdi Abaakouk
/root/tools/os-grow-fs.sh bacasable.sileht.net-bootdisk 11
224 95 Mehdi Abaakouk
</pre>
225 1 Mehdi Abaakouk
226 1 Mehdi Abaakouk
227 68 Mehdi Abaakouk
Puis sur la VM, plusieur cas de figure:
228 1 Mehdi Abaakouk
229 55 Mehdi Abaakouk
+Disque sans partition:+
230 1 Mehdi Abaakouk
231 1 Mehdi Abaakouk
<pre>
232 56 Laurent GUERBY
# Note: dans un screen car plutot pas rapide
233 96 Mehdi Abaakouk
resize2fs -p /dev/sdb
234 55 Mehdi Abaakouk
</pre>
235 1 Mehdi Abaakouk
236 55 Mehdi Abaakouk
+Disque avec partition avec parted récent (>= 3.1, ie: jessie, ubuntu 13.10):+
237 1 Mehdi Abaakouk
238 1 Mehdi Abaakouk
239 1 Mehdi Abaakouk
<pre> 
240 96 Mehdi Abaakouk
root@test4:~# parted /dev/sda print | grep sda
241 96 Mehdi Abaakouk
Disk /dev/sda: 64.4GB
242 1 Mehdi Abaakouk
 
243 96 Mehdi Abaakouk
root@test4# parted /dev/sda resizepart 1 
244 96 Mehdi Abaakouk
Warning: Partition /dev/sda1 is being used. Are you sure you want to continue?
245 1 Mehdi Abaakouk
Yes/No? Yes                                                               
246 1 Mehdi Abaakouk
End?  [42.9GB]? 64.4GB   # METTRE ICI LA TAILLE VU AU DESSUS                                                 
247 1 Mehdi Abaakouk
Information: You may need to update /etc/fstab.                           
248 1 Mehdi Abaakouk
249 96 Mehdi Abaakouk
root@test4:~# resize2fs /dev/sda1
250 1 Mehdi Abaakouk
resize2fs 1.42.9 (4-Feb-2014)
251 96 Mehdi Abaakouk
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
252 1 Mehdi Abaakouk
old_desc_blocks = 3, new_desc_blocks = 4
253 96 Mehdi Abaakouk
The filesystem on /dev/sda1 is now 15722400 blocks long.
254 1 Mehdi Abaakouk
255 96 Mehdi Abaakouk
root@test4:~# df -h | grep sda
256 1 Mehdi Abaakouk
/dev/vda1        60G  797M   56G   2% /
257 1 Mehdi Abaakouk
</pre>
258 1 Mehdi Abaakouk
259 55 Mehdi Abaakouk
260 55 Mehdi Abaakouk
+Disque avec partition avec vieux parted (< 3.1, ie: wheezy, vielle ubuntu):+
261 55 Mehdi Abaakouk
262 55 Mehdi Abaakouk
Pour debian wheezy, utilisation des packages ubuntu de 14.04 devrait permettre d'utiliser la méthod précendente sinon: 
263 55 Mehdi Abaakouk
(pas encore testé, à voir si le kernel veut bien reload la table des partitions après)
264 14 Laurent GUERBY
265 1 Mehdi Abaakouk
<pre>
266 15 Laurent GUERBY
sfdisk -d /dev/vda > vda.mbr
267 14 Laurent GUERBY
cp vda.mbr vda.mbr.ori
268 14 Laurent GUERBY
vi vda.mbr 
269 14 Laurent GUERBY
# mettre un tres grand nombre pour la fin de la partition
270 14 Laurent GUERBY
sfdisk -L -n --no-reread /dev/vda < vda.mbr
271 14 Laurent GUERBY
# cela va faire une erreur avec le max a mettre pour la fin de la partition
272 14 Laurent GUERBY
# changer la fin de la partition avec ce chiffre
273 14 Laurent GUERBY
sfdisk -L --no-reread /dev/vda < vda.mbr
274 14 Laurent GUERBY
reboot
275 16 Aymeric APLU
resize2fs -p /dev/vda1
276 14 Laurent GUERBY
</pre>
277 14 Laurent GUERBY
278 109 Mehdi Abaakouk
h3. Ajout/Suppression IP/Subnet d'une VM existante (mode simple)
279 1 Mehdi Abaakouk
280 109 Mehdi Abaakouk
<pre>
281 109 Mehdi Abaakouk
openstack ttnn add-ip VM_NAME 89.234.156.212
282 109 Mehdi Abaakouk
openstack ttnn remove-ip VM_NAME 89.234.156.212
283 109 Mehdi Abaakouk
</pre>
284 109 Mehdi Abaakouk
285 109 Mehdi Abaakouk
h3. Ajout/Suppression IP/Subnet d'une VM existante (mode avancé)
286 109 Mehdi Abaakouk
287 109 Mehdi Abaakouk
Le mode avancé permet d'ajouté les ipv6 et ipv4 que l'on veut pour la VM. Contrairement au mode simple qui ajoute l'ipv4, le fe80 et le subnet ipv6 à partir de l'ipv4
288 109 Mehdi Abaakouk
289 49 Mehdi Abaakouk
Voir les IPs actutelles de la VM:
290 1 Mehdi Abaakouk
291 49 Mehdi Abaakouk
<pre>
292 109 Mehdi Abaakouk
# openstack port show backup.tetaneutral.net-eth0  -c  allowed_address_pairs -c fixed_ips
293 1 Mehdi Abaakouk
| allowed_address_pairs | {"ip_address": "2a01:6600:8083:d400::/56", "mac_address": "fa:16:3e:5f:07:45"}                |
294 65 Mehdi Abaakouk
| fixed_ips             | {"subnet_id": "d431cacd-3b60-4ca9-af24-eacc8e5d8671", "ip_address": "89.234.156.212"}         |
295 49 Mehdi Abaakouk
</pre>
296 1 Mehdi Abaakouk
297 1 Mehdi Abaakouk
fixed_ips sont la liste des ip directement router dans le tap de la VM (on ne peut pas mettre de masque):
298 65 Mehdi Abaakouk
* en ipv4, c'est le /32 de l'ipv4
299 1 Mehdi Abaakouk
* en ipv6, c'est le /64 de l'ipv6
300 65 Mehdi Abaakouk
301 65 Mehdi Abaakouk
allowed_address_pairs sont des subnets à router:
302 65 Mehdi Abaakouk
303 65 Mehdi Abaakouk
* en ipv4, via la premier ipv4 de fixed_ips (setup inutile et qui ne fonctionne pas, car bird ne re-export pas ce genre de route)
304 1 Mehdi Abaakouk
* en ipv6, via la link local correspondant si elle existe dans fixed_ips, sinon directement dans le tap
305 1 Mehdi Abaakouk
306 1 Mehdi Abaakouk
307 1 Mehdi Abaakouk
Ajout/Suppression d'une ip dans fixed_ips (noter que les ip ici non pas de masque):
308 73 Mehdi Abaakouk
309 1 Mehdi Abaakouk
<pre>
310 109 Mehdi Abaakouk
openstack ttnn add-ip --manual VM_NAME 89.234.156.212
311 109 Mehdi Abaakouk
openstack ttnn add-ip --manual VM_NAME fe80::80:12
312 109 Mehdi Abaakouk
openstack ttnn remove-ip --manual VM_NAME 89.234.156.212
313 109 Mehdi Abaakouk
openstack ttnn remove-ip --manual VM_NAME fe80::80:12
314 1 Mehdi Abaakouk
</pre>
315 73 Mehdi Abaakouk
316 1 Mehdi Abaakouk
Ajout/Suppression d'une ip dans allowed_address_pairs (noter que les ip ici on a un masque):
317 1 Mehdi Abaakouk
318 1 Mehdi Abaakouk
<pre>
319 109 Mehdi Abaakouk
openstack ttnn add-ip --manual VM_NAME 2a01:6600:8083:d400::/56
320 109 Mehdi Abaakouk
openstack ttnn remove-ip --manual VM_NAME 2a01:6600:8083:d400::/56
321 1 Mehdi Abaakouk
</pre>
322 1 Mehdi Abaakouk
323 1 Mehdi Abaakouk
h3. Ajout d'une interface réseau à une VM:
324 73 Mehdi Abaakouk
325 73 Mehdi Abaakouk
<pre>
326 73 Mehdi Abaakouk
$ openstack ttnn tap add --ip 91.224.149.19 --port-name eth1 gizmo.sileht.net-eth1
327 73 Mehdi Abaakouk
Port gizmo.sileht.net-eth1 created:
328 73 Mehdi Abaakouk
+-------------------------------+-----------------------+----------------------------+--------------------------+-------------------+
329 73 Mehdi Abaakouk
| id                            | name                  | fixed_ips                  | allowed_address_pairs    | mac_address       |
330 73 Mehdi Abaakouk
+-------------------------------+-----------------------+----------------------------+--------------------------+-------------------+
331 73 Mehdi Abaakouk
| 39c262d6-df91-4c96-96bc-      | gizmo.sileht.net-eth1 | 91.224.149.19, fe80::81:13 | 2a03:7220:8081:1300::/56 | fa:16:3e:20:de:ba |
332 73 Mehdi Abaakouk
| f3573a37130a                  |                       |                            |                          |                   |
333 73 Mehdi Abaakouk
+-------------------------------+-----------------------+----------------------------+--------------------------+-------------------+
334 73 Mehdi Abaakouk
+--------------------------------------+------------------+------+---------------+--------+-----------------------------------------+
335 73 Mehdi Abaakouk
| id                                   | name             | host | flavor        | status | addresses                               |
336 73 Mehdi Abaakouk
+--------------------------------------+------------------+------+---------------+--------+-----------------------------------------+
337 73 Mehdi Abaakouk
| 0346263f-77f6-4009-bdb3-d8720ec583e9 | gizmo.sileht.net | g9   | 2vcpu-4096ram | ACTIVE | vlan-routed=91.224.148.3,               |
338 73 Mehdi Abaakouk
|                                      |                  |      |               |        | 91.224.149.214, fe80::80:03,            |
339 1 Mehdi Abaakouk
|                                      |                  |      |               |        | fe80::81:d6, 91.224.149.19, fe80::81:13 |
340 1 Mehdi Abaakouk
+--------------------------------------+------------------+------+---------------+--------+-----------------------------------------+
341 1 Mehdi Abaakouk
</pre>
342 1 Mehdi Abaakouk
343 1 Mehdi Abaakouk
Dans la VM:
344 1 Mehdi Abaakouk
345 1 Mehdi Abaakouk
<pre>
346 1 Mehdi Abaakouk
$ dmesg | tail 
347 1 Mehdi Abaakouk
[ 1315.826088] virtio-pci 0000:00:06.0: using default PCI settings
348 1 Mehdi Abaakouk
[ 1315.826102] virtio-pci 0000:00:07.0: no hotplug settings from platform
349 1 Mehdi Abaakouk
[ 1315.826102] virtio-pci 0000:00:07.0: using default PCI settings
350 1 Mehdi Abaakouk
[ 1315.826116] pci 0000:00:08.0: no hotplug settings from platform
351 1 Mehdi Abaakouk
[ 1315.826117] pci 0000:00:08.0: using default PCI settings
352 1 Mehdi Abaakouk
[ 1315.826382] virtio-pci 0000:00:08.0: enabling device (0000 -> 0003)
353 1 Mehdi Abaakouk
[ 1315.829281] virtio-pci 0000:00:08.0: setting latency timer to 64
354 1 Mehdi Abaakouk
[ 1315.829535] virtio-pci 0000:00:08.0: irq 50 for MSI/MSI-X
355 1 Mehdi Abaakouk
[ 1315.829555] virtio-pci 0000:00:08.0: irq 51 for MSI/MSI-X
356 73 Mehdi Abaakouk
[ 1315.829563] virtio-pci 0000:00:08.0: irq 52 for MSI/MSI-X
357 73 Mehdi Abaakouk
358 1 Mehdi Abaakouk
$ ip l   show dev eth1
359 1 Mehdi Abaakouk
4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
360 73 Mehdi Abaakouk
    link/ether fa:16:3e:6b:32:07 brd ff:ff:ff:ff:ff:ff
361 73 Mehdi Abaakouk
362 73 Mehdi Abaakouk
$ tail -15 /etc/network/interfaces
363 73 Mehdi Abaakouk
auto eth1
364 73 Mehdi Abaakouk
iface eth1 inet6 static
365 73 Mehdi Abaakouk
    pre-up /sbin/sysctl -w net.ipv6.conf.eth1.accept_ra=0
366 73 Mehdi Abaakouk
    pre-up /sbin/sysctl -w net.ipv6.conf.eth1.autoconf=0
367 73 Mehdi Abaakouk
    address 2a03:7220:8081:1300::1
368 73 Mehdi Abaakouk
    netmask 56
369 1 Mehdi Abaakouk
    gateway fe80::31
370 73 Mehdi Abaakouk
    up ip addr add fe80::81:13/64 dev eth0
371 73 Mehdi Abaakouk
372 73 Mehdi Abaakouk
iface eth1 inet manual
373 73 Mehdi Abaakouk
    pre-up /sbin/sysctl -w net.ipv6.conf.eth1.accept_ra=0
374 73 Mehdi Abaakouk
    pre-up /sbin/sysctl -w net.ipv6.conf.eth1.autoconf=0
375 73 Mehdi Abaakouk
    up ip link set eth1 up
376 73 Mehdi Abaakouk
    up ip addr add 91.224.149.19/32 dev eth1
377 73 Mehdi Abaakouk
    up ip route add default via 91.224.148.0 dev eth1 onlink
378 47 Mehdi Abaakouk
379 47 Mehdi Abaakouk
$ ifup eth1
380 1 Mehdi Abaakouk
</pre>
381 1 Mehdi Abaakouk
382 47 Mehdi Abaakouk
h3. Réinstallation/Réparation grub d'un VM
383 47 Mehdi Abaakouk
384 47 Mehdi Abaakouk
385 73 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
386 73 Mehdi Abaakouk
<pre>
387 47 Mehdi Abaakouk
# openstack server stop VMNAME.tetaneutral.net
388 47 Mehdi Abaakouk
# openstack server show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
389 47 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
390 47 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
391 47 Mehdi Abaakouk
</pre>
392 47 Mehdi Abaakouk
393 47 Mehdi Abaakouk
394 47 Mehdi Abaakouk
395 67 Laurent GUERBY
Bien attendre que la VM soir éteinte, aller sur l'hyperviseur en question, et taper
396 47 Mehdi Abaakouk
<pre>
397 47 Mehdi Abaakouk
virt-customize -v -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 --run-command 'update-grub ; grub-install /dev/sda;'
398 47 Mehdi Abaakouk
</pre>
399 47 Mehdi Abaakouk
400 73 Mehdi Abaakouk
Enfin, restart la VM
401 1 Mehdi Abaakouk
<pre>
402 19 Mehdi Abaakouk
# openstack server start VMNAME.tetaneutral.net
403 19 Mehdi Abaakouk
</pre>
404 19 Mehdi Abaakouk
405 1 Mehdi Abaakouk
h3. Monter le disque d'un vm sur une machine hote pour dépannage.
406 20 Alexandre GUY
407 20 Alexandre GUY
L’exemple montre la modification du fichier /etc/ssh/sshd_config
408 19 Mehdi Abaakouk
409 73 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
410 93 Mehdi Abaakouk
<pre>
411 115 Matthieu Herrb
root@g1# openstack server stop VMNAME.tetaneutral.net
412 115 Matthieu Herrb
root@gg1# openstack server show -c OS-EXT-SRV-ATTR:host -c id VMNAME.tetaneutral.net
413 19 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
414 47 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
415 20 Alexandre GUY
</pre>
416 19 Mehdi Abaakouk
417 19 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis:
418 19 Mehdi Abaakouk
<pre>
419 1 Mehdi Abaakouk
420 115 Matthieu Herrb
root@<hyperviseur># virt-edit -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 /etc/ssh/sshd_config
421 20 Alexandre GUY
</pre>
422 18 Mehdi Abaakouk
423 115 Matthieu Herrb
Fermer le fichier puis sur g1 restart la VM
424 42 Mehdi Abaakouk
<pre>
425 115 Matthieu Herrb
root@g1# openstack server start VMNAME.tetaneutral.net
426 91 Mehdi Abaakouk
</pre>
427 41 Mehdi Abaakouk
428 41 Mehdi Abaakouk
h3. Convert du fs root en ext4 et passage en scsi (tester avec ceph jewel and openstack ocata)
429 70 Mehdi Abaakouk
430 41 Mehdi Abaakouk
/!\ à retester à chaque update openstack vu que ca fait du sql /!\
431 41 Mehdi Abaakouk
432 1 Mehdi Abaakouk
Dans la VM, préparation de grub et du fstab:
433 1 Mehdi Abaakouk
434 42 Mehdi Abaakouk
<pre>
435 45 Mehdi Abaakouk
$ vi /etc/fstab
436 1 Mehdi Abaakouk
# Viré /proc
437 42 Mehdi Abaakouk
# Pour / (voir les autres) mettre: 
438 41 Mehdi Abaakouk
LABEL=cloudimg-rootfs  /  ext4   defaults,discard,noatime  0 0
439 42 Mehdi Abaakouk
440 42 Mehdi Abaakouk
$ e2label /dev/vda1 cloudimg-rootfs
441 41 Mehdi Abaakouk
$ apt-get install grub-pc
442 41 Mehdi Abaakouk
$ apt-get purge extlinux
443 80 Mehdi Abaakouk
$ rm -f /extlinux.conf 
444 80 Mehdi Abaakouk
$ grub-install /dev/vda
445 80 Mehdi Abaakouk
$ vi /etc/default/grub
446 41 Mehdi Abaakouk
# Ajouter: GRUB_CMDLINE_LINUX="elevator=noop console=tty0 console=ttyS0,115200n8"
447 42 Mehdi Abaakouk
$ update-grub
448 33 Mehdi Abaakouk
$ shutdown -h now
449 33 Mehdi Abaakouk
</pre>
450 33 Mehdi Abaakouk
451 33 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM
452 73 Mehdi Abaakouk
453 82 Mehdi Abaakouk
<pre>
454 33 Mehdi Abaakouk
# openstack server stop VMNAME.tetaneutral.net
455 33 Mehdi Abaakouk
# openstack server show -c OS-EXT-SRV-ATTR:host -c id VMNAME.tetaneutral.net
456 35 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
457 1 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
458 35 Mehdi Abaakouk
</pre>
459 35 Mehdi Abaakouk
460 35 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis:
461 35 Mehdi Abaakouk
462 35 Mehdi Abaakouk
<pre>
463 35 Mehdi Abaakouk
$ virt-rescue --suggest 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
464 35 Mehdi Abaakouk
...
465 35 Mehdi Abaakouk
# /dev/sdb1 is the root of a linux operating system
466 1 Mehdi Abaakouk
# type: linux, distro: debian, version: 8.0
467 35 Mehdi Abaakouk
# 8.0
468 1 Mehdi Abaakouk
469 42 Mehdi Abaakouk
mount /dev/sdb1 /sysroot/
470 1 Mehdi Abaakouk
mount --bind /dev /sysroot/dev
471 42 Mehdi Abaakouk
mount --bind /dev/pts /sysroot/dev/pts
472 42 Mehdi Abaakouk
mount --bind /proc /sysroot/proc
473 42 Mehdi Abaakouk
mount --bind /sys /sysroot/sys
474 1 Mehdi Abaakouk
</pre>
475 1 Mehdi Abaakouk
476 1 Mehdi Abaakouk
# Utiliser le device proposé pour la convertion en ext4:
477 1 Mehdi Abaakouk
478 1 Mehdi Abaakouk
<pre>
479 1 Mehdi Abaakouk
$ virt-rescue 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
480 42 Mehdi Abaakouk
> tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
481 42 Mehdi Abaakouk
> e2fsck -fDC0 /dev/sdb1
482 42 Mehdi Abaakouk
> <CTRL+D>
483 82 Mehdi Abaakouk
</pre>
484 1 Mehdi Abaakouk
485 1 Mehdi Abaakouk
Ajout des attributs scsi
486 82 Mehdi Abaakouk
487 91 Mehdi Abaakouk
<pre>
488 1 Mehdi Abaakouk
openstack volume show VMNAME.tetaneutral.net-bootdisk
489 1 Mehdi Abaakouk
openstack volume set --image-property hw_scsi_model=virtio-scsi --image-property hw_disk_bus=scsi  VMNAME.tetaneutral.net-bootdisk
490 82 Mehdi Abaakouk
</pre>
491 1 Mehdi Abaakouk
492 1 Mehdi Abaakouk
Puis supprimer et recréer la VM
493 82 Mehdi Abaakouk
494 82 Mehdi Abaakouk
<pre>
495 73 Mehdi Abaakouk
openstack server show -c name -c flavor -c addresses VMNAME.tetaneutral.net 
496 82 Mehdi Abaakouk
openstack ttnn delete VMNAME.tetaneutral.net
497 1 Mehdi Abaakouk
openstack ttnn create --ip <ip> --flavor <flavor> VMNAME.tetaneutral.net # --volume disk-1 # pour les disques additionels
498 98 Mehdi Abaakouk
</pre>
499 98 Mehdi Abaakouk
500 118 Mehdi Abaakouk
h3. Transformer un volume Ceph "manuel" (type <pseudo-adherent>-vol) en volume Ceph "Openstack" (volume-<id-openstack>)
501 118 Mehdi Abaakouk
502 118 Mehdi Abaakouk
On crée d'abord in volume cinder vide de la meme taille.
503 118 Mehdi Abaakouk
504 118 Mehdi Abaakouk
<pre>
505 119 Mehdi Abaakouk
# rbd info -p disks XXXXXXXX-vol | grep size
506 118 Mehdi Abaakouk
size 1024 GB in 262144 objects
507 118 Mehdi Abaakouk
508 118 Mehdi Abaakouk
/!\ la taille ici doit être identique dans cinder et dans ceph /!\
509 119 Mehdi Abaakouk
# openstack volume create --type ceph --size 1024 vmXXXXXXXX.tetaneutral.net-disk-1
510 118 Mehdi Abaakouk
+---------------------+--------------------------------------+
511 118 Mehdi Abaakouk
| Field               | Value                                |
512 118 Mehdi Abaakouk
+---------------------+--------------------------------------+
513 118 Mehdi Abaakouk
| attachments         | []                                   |
514 118 Mehdi Abaakouk
| availability_zone   | nova                                 |
515 118 Mehdi Abaakouk
| bootable            | false                                |
516 118 Mehdi Abaakouk
| consistencygroup_id | None                                 |
517 118 Mehdi Abaakouk
| created_at          | 2018-08-28T06:11:57.669300           |
518 118 Mehdi Abaakouk
| description         | None                                 |
519 118 Mehdi Abaakouk
| encrypted           | False                                |
520 119 Mehdi Abaakouk
| id                  | dcc26207-ef60-48e6-983e-94c1c945dXbX |
521 118 Mehdi Abaakouk
| migration_status    | None                                 |
522 118 Mehdi Abaakouk
| multiattach         | False                                |
523 119 Mehdi Abaakouk
| name                | vmXXXXXXXX.tetaneutral.net-disk-1    |
524 118 Mehdi Abaakouk
| properties          |                                      |
525 118 Mehdi Abaakouk
| replication_status  | None                                 |
526 118 Mehdi Abaakouk
| size                | 1024                                 |
527 118 Mehdi Abaakouk
| snapshot_id         | None                                 |
528 118 Mehdi Abaakouk
| source_volid        | None                                 |
529 118 Mehdi Abaakouk
| status              | creating                             |
530 118 Mehdi Abaakouk
| type                | ceph                                 |
531 118 Mehdi Abaakouk
| updated_at          | None                                 |
532 118 Mehdi Abaakouk
| user_id             | f18b121edda04346b86610fa23983a0e     |
533 118 Mehdi Abaakouk
+---------------------+--------------------------------------+
534 118 Mehdi Abaakouk
535 119 Mehdi Abaakouk
# rbd info -p disks volume-dcc26207-ef60-48e6-983e-94c1c945dXbX | grep size
536 118 Mehdi Abaakouk
        size 1024 GB in 262144 objects
537 118 Mehdi Abaakouk
/!\ doit être identique à l'image d'origine /!\
538 118 Mehdi Abaakouk
539 118 Mehdi Abaakouk
</pre>
540 118 Mehdi Abaakouk
541 118 Mehdi Abaakouk
En suite on s'assure que les features de l'image sont celle attendu par Openstack:
542 118 Mehdi Abaakouk
543 118 Mehdi Abaakouk
<pre>
544 118 Mehdi Abaakouk
545 119 Mehdi Abaakouk
# rbd info -p disks volume-dcc26207-ef60-48e6-983e-94c1c945dXbX | grep features
546 118 Mehdi Abaakouk
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
547 118 Mehdi Abaakouk
548 119 Mehdi Abaakouk
# rbd info -p disks XXXXXXXX-vol | grep features
549 118 Mehdi Abaakouk
        features: layering
550 118 Mehdi Abaakouk
551 1 Mehdi Abaakouk
# # NOTE, deep-flatten ne peut pas être ajouté, mais c'est pas grave.
552 119 Mehdi Abaakouk
# for i in exclusive-lock object-map fast-diff; do rbd feature enable disks/XXXXXXXX-vol $i ; done
553 1 Mehdi Abaakouk
554 1 Mehdi Abaakouk
555 1 Mehdi Abaakouk
# # Rebuild metadata file on the volume
556 119 Mehdi Abaakouk
# rbd object-map rebuild disks/XXXXXXXX-vol
557 1 Mehdi Abaakouk
Object Map Rebuild: 2% complete...
558 1 Mehdi Abaakouk
</pre>
559 1 Mehdi Abaakouk
560 119 Mehdi Abaakouk
Et pour finir on swap les deux volumes
561 119 Mehdi Abaakouk
562 119 Mehdi Abaakouk
<pre>
563 119 Mehdi Abaakouk
# rbd rm -p disks volume-dcc26207-ef60-48e6-983e-94c1c945dXbX
564 119 Mehdi Abaakouk
Removing image: 100% complete...done.
565 119 Mehdi Abaakouk
# rbd mv disks/XXXXXXXX-vol disks/volume-dcc26207-ef60-48e6-983e-94c1c945dXbX
566 119 Mehdi Abaakouk
</pre>
567 119 Mehdi Abaakouk
568 119 Mehdi Abaakouk
Voila on peut maintenant mettre le disque dans une VM:
569 119 Mehdi Abaakouk
570 119 Mehdi Abaakouk
<pre>
571 119 Mehdi Abaakouk
openstack server add volume XXXXXXXX.tetaneutral.net XXXXXXXX.tetaneutral.net-disk-1
572 119 Mehdi Abaakouk
</pre>
573 118 Mehdi Abaakouk
574 118 Mehdi Abaakouk
575 98 Mehdi Abaakouk
h3. Déplacer une VM de pool ceph (dernier test avec ceph jewel / openstack ocata)
576 98 Mehdi Abaakouk
577 98 Mehdi Abaakouk
578 98 Mehdi Abaakouk
<pre>
579 98 Mehdi Abaakouk
# openstack server show test246.tetaneutral.net -c id -c flavor -c addresses -c status
580 98 Mehdi Abaakouk
+-----------+------------------------------------------------------+
581 98 Mehdi Abaakouk
| Field     | Value                                                |
582 98 Mehdi Abaakouk
+-----------+------------------------------------------------------+
583 98 Mehdi Abaakouk
| addresses | vlan-routed=91.224.149.115, fe80::80:fe              |
584 98 Mehdi Abaakouk
| flavor    | 1vcpu-2048ram (7880cafc-bd0b-4045-9777-ef2e9201bd6c) |
585 98 Mehdi Abaakouk
| id        | 485f270a-eb2e-452e-8733-fc4c741cbe8f                 |
586 98 Mehdi Abaakouk
| status    | ACTIVE                                               |
587 98 Mehdi Abaakouk
+-----------+------------------------------------------------------+
588 98 Mehdi Abaakouk
589 98 Mehdi Abaakouk
# openstack server delete test246.tetaneutral.net
590 98 Mehdi Abaakouk
Request to delete server test246.tetaneutral.net has been accepted.
591 98 Mehdi Abaakouk
592 132 Fabien ADAM
# openstack volume set --type ceph-ssd --retype-policy on-demand test246.tetaneutral.net-bootdisk
593 98 Mehdi Abaakouk
594 98 Mehdi Abaakouk
# watch -n1 -- 'openstack volume list --long | grep test246.tetaneutral.net-bootdisk'
595 98 Mehdi Abaakouk
| 82279cc1-9a34-4108-b7a6-6944f252a2c3 | test246.tetaneutral.net-bootdisk           | retyping  |    1 |  ceph
596 98 Mehdi Abaakouk
| 313dc3e5-a04a-435b-8b35-ecc5d7b5695c | test246.tetaneutral.net-bootdisk           | available |    1 |  ceph-ssd
597 98 Mehdi Abaakouk
598 98 Mehdi Abaakouk
Attendre qu'il n'y ai plus que le nouveau volume
599 98 Mehdi Abaakouk
600 98 Mehdi Abaakouk
| 313dc3e5-a04a-435b-8b35-ecc5d7b5695c | test246.tetaneutral.net                    | available |    1 |  ceph-ssd
601 98 Mehdi Abaakouk
602 98 Mehdi Abaakouk
# openstack ttnn create --ip 91.224.149.115 --flavor 1vcpu-2048ram test246.tetaneutral.net
603 26 Mehdi Abaakouk
</pre>
604 43 Mehdi Abaakouk
605 43 Mehdi Abaakouk
h3. Réaligne VM partition (guide pour vm avec une seul partition)
606 43 Mehdi Abaakouk
607 43 Mehdi Abaakouk
608 43 Mehdi Abaakouk
Prérequies:
609 43 Mehdi Abaakouk
610 43 Mehdi Abaakouk
* VM utilse grub2
611 43 Mehdi Abaakouk
* 
612 43 Mehdi Abaakouk
613 43 Mehdi Abaakouk
Récuperer l'id et l'hyperviseur de la VM, ainsi que l'id du disk
614 73 Mehdi Abaakouk
615 73 Mehdi Abaakouk
<pre>
616 43 Mehdi Abaakouk
# openstack server stop VMNAME.tetaneutral.net
617 43 Mehdi Abaakouk
# openstack server show VMNAME.tetaneutral.net | grep -e 'host ' -e ' id '
618 43 Mehdi Abaakouk
| OS-EXT-SRV-ATTR:host                 | g1                                                       |
619 43 Mehdi Abaakouk
| id                                   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0                     |
620 43 Mehdi Abaakouk
# cinder list | grep puppet
621 43 Mehdi Abaakouk
| 213e894e-2f20-42b5-a27b-21f5a355c722 |   in-use  |          VMNAME.tetaneutral.net-bootdisk          |  20  |     ceph-ssd    |   true   | 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 |
622 43 Mehdi Abaakouk
</pre>
623 43 Mehdi Abaakouk
624 43 Mehdi Abaakouk
Aller sur l'hyperviseur en question, puis vérifier l'alignement:
625 43 Mehdi Abaakouk
626 43 Mehdi Abaakouk
<pre>
627 43 Mehdi Abaakouk
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
628 43 Mehdi Abaakouk
/dev/sdb1        65536           512   bad (alignment < 4K)
629 43 Mehdi Abaakouk
</pre>
630 43 Mehdi Abaakouk
631 43 Mehdi Abaakouk
Réalignemet, *aller dans un espace ou il y a 2x l'espace utile de la VM*, puis:
632 43 Mehdi Abaakouk
633 43 Mehdi Abaakouk
<pre>
634 44 Mehdi Abaakouk
$ virt-tar-out -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 / - | gzip --best > VMNAME.tar.gz
635 43 Mehdi Abaakouk
$ rbd -p ssds info volume-213e894e-2f20-42b5-a27b-21f5a355c722
636 43 Mehdi Abaakouk
rbd image 'volume-213e894e-2f20-42b5-a27b-21f5a355c722':
637 43 Mehdi Abaakouk
        size 20480 MB in 5120 objects
638 43 Mehdi Abaakouk
        order 22 (4096 kB objects)
639 43 Mehdi Abaakouk
        block_name_prefix: rbd_data.996cc92ae8944a
640 43 Mehdi Abaakouk
        format: 2
641 43 Mehdi Abaakouk
        features: layering
642 43 Mehdi Abaakouk
$ virt-make-fs --label=cloudimg-rootfs --partition=mbr --type=ext4 --format=raw --size=20480 VMNAME.tar.gz VMNAME.img
643 43 Mehdi Abaakouk
$ virt-customize -a VMNAME.img --run-command 'update-grub ; grub-install /dev/sda'
644 43 Mehdi Abaakouk
$ rbd mv ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722 ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722.unaligned
645 43 Mehdi Abaakouk
$ rbd import --image-format 2 VMNAME.img ssds/volume-213e894e-2f20-42b5-a27b-21f5a355c722
646 26 Mehdi Abaakouk
</pre>
647 26 Mehdi Abaakouk
648 26 Mehdi Abaakouk
Vérification:
649 26 Mehdi Abaakouk
650 26 Mehdi Abaakouk
<pre>
651 26 Mehdi Abaakouk
$ virt-alignment-scan -d 918e0ec7-0909-423c-9a67-15b5ef7c7ae0 
652 26 Mehdi Abaakouk
/dev/sdb1        65536           64K   ok
653 26 Mehdi Abaakouk
</pre>
654 26 Mehdi Abaakouk
655 136 Mehdi Abaakouk
h3. Création/Restauration/Export snapshot
656 26 Mehdi Abaakouk
657 26 Mehdi Abaakouk
Création:
658 26 Mehdi Abaakouk
659 26 Mehdi Abaakouk
<pre>
660 26 Mehdi Abaakouk
source os.conf
661 26 Mehdi Abaakouk
/root/tools/os-snapshot-vm.sh pano.tetaneutral.net bootdisk /
662 27 Laurent GUERBY
* Freezing / of pano.tetaneutral.net
663 27 Laurent GUERBY
* Snapshoting pano.tetaneutral.net-bootdisk
664 26 Mehdi Abaakouk
Snapshot pano.tetaneutral.net-bootdisk-20150125-1600 is in state creating ..
665 134 Mehdi Abaakouk
e06727d3-df4a-4873-82af-3a8f3e6e2aa5
666 26 Mehdi Abaakouk
* pano.tetaneutral.net-bootdisk snapshoted
667 26 Mehdi Abaakouk
* / of pano.tetaneutral.net unfreezed
668 26 Mehdi Abaakouk
</pre>
669 26 Mehdi Abaakouk
670 26 Mehdi Abaakouk
Restauration:
671 73 Mehdi Abaakouk
672 26 Mehdi Abaakouk
<pre>
673 130 Guilhem Saurel
$ openstack volume snapshot list
674 73 Mehdi Abaakouk
...
675 2 Mehdi Abaakouk
$ openstack volume create --size 101 --snapshot pano.tetaneutral.net-bootdisk-20150125-1600  pano-restauration-test
676 2 Mehdi Abaakouk
$ openstack server add volume pano.tetaneutral.net pano-restauration-test
677 134 Mehdi Abaakouk
</pre>
678 134 Mehdi Abaakouk
679 134 Mehdi Abaakouk
Extract du snapshot pour fournir à l'adhérent:
680 134 Mehdi Abaakouk
681 135 Mehdi Abaakouk
Sur g1:
682 135 Mehdi Abaakouk
<pre>
683 134 Mehdi Abaakouk
$ openstack volume show pano.tetaneutral.net-bootdisk -f value -c id
684 134 Mehdi Abaakouk
<UUID_VOLUME>
685 134 Mehdi Abaakouk
$ openstack volume snapshot list --volume pano.tetaneutral.net-bootdisk
686 1 Mehdi Abaakouk
| <UUID_SNAPSHOT> | pano.tetaneutral.net-bootdisk-20200117-1155 | None        | available |   50 |
687 135 Mehdi Abaakouk
</pre>
688 134 Mehdi Abaakouk
689 134 Mehdi Abaakouk
Sur nagios.tetaneutral.net
690 134 Mehdi Abaakouk
<pre>
691 134 Mehdi Abaakouk
rbd -p ssds export volume-<UUID_VOLUME>@snapshot-<UUID_SNAPSHOT> pano.tetaneutral.net-bootdisk.raw
692 134 Mehdi Abaakouk
qemy-img convert -O qcow2 pano.tetaneutral.net-bootdisk.raw pano.tetaneutral.net-bootdisk.qcow
693 134 Mehdi Abaakouk
rm -f pano.tetaneutral.net-bootdisk.raw
694 107 Mehdi Abaakouk
</pre>
695 1 Mehdi Abaakouk
696 127 Matthieu Herrb
h3. Virer cloud-init sans accés à la VM:
697 110 Mehdi Abaakouk
698 110 Mehdi Abaakouk
<pre>
699 110 Mehdi Abaakouk
# openstack server stop VMNAME.tetaneutral.net 
700 110 Mehdi Abaakouk
# openstack server show VMNAME.tetaneutral.net -c id -c OS-EXT-SRV-ATTR:host -c status -f value
701 110 Mehdi Abaakouk
g12
702 110 Mehdi Abaakouk
a82eb312-7d42-44e1-bce2-a81292916cc3
703 110 Mehdi Abaakouk
SHUTOFF
704 110 Mehdi Abaakouk
705 110 Mehdi Abaakouk
# virt-customize -v --connect "qemu+ssh://<SHORT HYPERVISOR HOSTNAME>:2222/system" -d <ID> --run-command "echo ::::::::::::::: ; DEBIAN_FRONTEND=noninteractive apt-get -y purge cloud-init cloud-initramfs-growroot ; echo :::::::::::: ; "
706 110 Mehdi Abaakouk
</pre>
707 110 Mehdi Abaakouk
708 128 Matthieu Herrb
h2. Opérations sur les hyperviseurs
709 107 Mehdi Abaakouk
710 107 Mehdi Abaakouk
h3. Reboot d'un hyperviseur
711 107 Mehdi Abaakouk
712 51 Mehdi Abaakouk
Sur g1
713 107 Mehdi Abaakouk
714 51 Mehdi Abaakouk
<pre>
715 50 Mehdi Abaakouk
# openstack ttnn evacuate HOST
716 50 Mehdi Abaakouk
Migration of :
717 1 Mehdi Abaakouk
- lagrandeourse.tetaneutral.net [g2/active]
718 29 Mehdi Abaakouk
- pontsjumeaux.tetaneutral.net [g2/active]
719 29 Mehdi Abaakouk
- log.tetaneutral.net [g2/active]
720 1 Mehdi Abaakouk
- jabber.tetaneutral.net [g2/active]
721 107 Mehdi Abaakouk
- vmfatal.tetaneutral.net [g2/active]
722 1 Mehdi Abaakouk
- zoe.tetaneutral.net [g2/active]
723 1 Mehdi Abaakouk
...
724 107 Mehdi Abaakouk
725 1 Mehdi Abaakouk
Continue (Y/n) ? Y
726 1 Mehdi Abaakouk
rollback script 'evacuate-rollback-g2.sh' created
727 1 Mehdi Abaakouk
Live migration of lagrandeourse.tetaneutral.net [g2/active]: Complete on g2 and still alive \o/
728 1 Mehdi Abaakouk
...
729 107 Mehdi Abaakouk
</pre>
730 1 Mehdi Abaakouk
731 1 Mehdi Abaakouk
Sur l'hyperviseur en question:
732 107 Mehdi Abaakouk
733 107 Mehdi Abaakouk
<pre>
734 107 Mehdi Abaakouk
# ps fauxwww|grep kvm           # verifier qu'il n'y a plus de VM lancé
735 107 Mehdi Abaakouk
# virsh list --all              # verifier qu'il n'y a plus de VM dans libvirt
736 107 Mehdi Abaakouk
# ceph osd set noout            # pour prevenir que les OSD vont revenir
737 107 Mehdi Abaakouk
# systemctl stop ceph-mon@*     # Stopper les osd 
738 29 Mehdi Abaakouk
# systemctl stop ceph-osd@*     # Stopper les osd 
739 107 Mehdi Abaakouk
# reboot
740 107 Mehdi Abaakouk
</pre>
741 107 Mehdi Abaakouk
742 107 Mehdi Abaakouk
743 107 Mehdi Abaakouk
Une fois l'opération terminer, pour remettre l'hyperviseur en route, sur g1
744 107 Mehdi Abaakouk
745 107 Mehdi Abaakouk
<pre>
746 107 Mehdi Abaakouk
ceph osd tree                   # Vérifier que les OSDs de cette hypervisuer sont revenur
747 107 Mehdi Abaakouk
./tools/os-overview.sh          # Vérifier que neutron et nova sont ok sur cette hyperviseur
748 107 Mehdi Abaakouk
749 107 Mehdi Abaakouk
ceph osd unset noout            
750 107 Mehdi Abaakouk
./evacuate-rollback-g2.sh       # Remettre les VMs dessus.
751 107 Mehdi Abaakouk
752 23 Laurent GUERBY
</pre>
753 23 Laurent GUERBY
754 133 Fabien ADAM
h3. Migration d'une VM sur un autre hyperviseur
755 133 Fabien ADAM
756 133 Fabien ADAM
La migration se fait à chaud, grace à la copie de la RAM, et l'accès au disque sur le cluster ceph depuis n'importe quel hyperviseur.
757 133 Fabien ADAM
On spécifie l'hyperviseur de destination (ici g12), et la VM à migrer (ici ring01.tetaneutral.net).
758 133 Fabien ADAM
<pre>
759 133 Fabien ADAM
openstack server migrate --live g12 ring01.tetaneutral.net --wait
760 133 Fabien ADAM
</pre>
761 133 Fabien ADAM
762 23 Laurent GUERBY
h2. VM de management (nommé openstack)
763 23 Laurent GUERBY
764 23 Laurent GUERBY
h3. Live Migration d'un host à l'autre
765 23 Laurent GUERBY
766 23 Laurent GUERBY
Cela fait tout à notre place niveau kvm/libvirt/ceph
767 23 Laurent GUERBY
768 23 Laurent GUERBY
<pre>
769 23 Laurent GUERBY
virsh migrate --persistent --undefinesource --live --p2p openstack qemu+ssh://g2.tetaneutral.net:2222/system
770 71 Mehdi Abaakouk
</pre>
771 23 Laurent GUERBY
772 23 Laurent GUERBY
h3. Recover depuis une perte de la machine hote:
773 53 Mehdi Abaakouk
774 23 Laurent GUERBY
Créé un fichier openstack.xml à partir d'un backup de '/etc/libvirt/qemu/openstack.xml' ou utiliser l'exemple ici: attachment:openstack.xml
775 1 Mehdi Abaakouk
776 1 Mehdi Abaakouk
_Note: il faut surement viré les uuid des interfaces openvswitch qui sont différent suivant le hosts_
777 1 Mehdi Abaakouk
778 1 Mehdi Abaakouk
Puis on recréé la VM
779 53 Mehdi Abaakouk
780 60 Mehdi Abaakouk
<pre>
781 60 Mehdi Abaakouk
$ virsh create openstack.xml
782 1 Mehdi Abaakouk
$ virsh start openstack.xml
783 1 Mehdi Abaakouk
</pre>
784 120 Mehdi Abaakouk
785 121 Mehdi Abaakouk
h2. Fonctionnement du boot des VM Openstack et de leur auto-configuration
786 121 Mehdi Abaakouk
787 121 Mehdi Abaakouk
Contrairement à la plupart des déploiements Openstack:
788 121 Mehdi Abaakouk
* Nous n’utilisons pas de server DHCP de neutron pour distribuer les IPs
789 121 Mehdi Abaakouk
* Nous n’utilisons pas le "nova/neutron-metadata-api" + "cloud-init" pour configurer les VMs (hostname, resize du fs, maj APT, DNS, clé ssh ...)
790 121 Mehdi Abaakouk
791 121 Mehdi Abaakouk
Chez TTNN, c'est plus old school et pas très cloudy, mais c'est flexible, ca marche et c'est compatible avec tous les OS.
792 121 Mehdi Abaakouk
(contrairement à cloud-init qui marche que pour les cas très simple et uniquement sous certain linux)
793 121 Mehdi Abaakouk
794 121 Mehdi Abaakouk
h3. Processus de création des VMs
795 121 Mehdi Abaakouk
796 121 Mehdi Abaakouk
Pour cela, on utilise la feature "config-drive" de Nova, qui attache un CDROM avec un fichier dedans.
797 121 Mehdi Abaakouk
Le fichier en question doit être passé en paramètre de -'openstack server create'- pour booter la VM, cela est fait +automatiquement+ quand on utilise *openstack ttnn create*.
798 121 Mehdi Abaakouk
Neutron, lui s'occupe juste de router les IPs dans le tap de la VM.
799 121 Mehdi Abaakouk
800 121 Mehdi Abaakouk
Dans notre cas le fichier est un script shell que vous trouverez ici:
801 121 Mehdi Abaakouk
802 121 Mehdi Abaakouk
https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/osc-plugins/osc_ttnn/boot-vm-user-data.tmpl
803 121 Mehdi Abaakouk
804 121 Mehdi Abaakouk
Ce script s'occupe pour tous les OS supportés (debian/ubuntu/cirros/fedora/*BSD) de:
805 121 Mehdi Abaakouk
* resize le rootfs pour prendre tout l'espace disponible
806 121 Mehdi Abaakouk
* configurer le hostname
807 121 Mehdi Abaakouk
* configurer les IPs v4 et v6
808 121 Mehdi Abaakouk
* remplir /etc/hosts
809 121 Mehdi Abaakouk
* configurer les DNS
810 121 Mehdi Abaakouk
* installer la clé ssh TTNN
811 121 Mehdi Abaakouk
* générer des clé sshd
812 121 Mehdi Abaakouk
* mettre à jour la distribution
813 121 Mehdi Abaakouk
814 121 Mehdi Abaakouk
En gros tous ce qui peut pas être fait dans l'image elle même.
815 121 Mehdi Abaakouk
816 121 Mehdi Abaakouk
Ce script sera ensuite exécuté lors du premier boot de la machine.
817 121 Mehdi Abaakouk
818 121 Mehdi Abaakouk
TTNN prépare des images spécial de VM qui lance ce script au premier boot.
819 121 Mehdi Abaakouk
820 121 Mehdi Abaakouk
h3. Processus de création des images
821 121 Mehdi Abaakouk
822 121 Mehdi Abaakouk
Les images des VMs TTNN sont construite un script lancer depuis g1:tools/images/
823 121 Mehdi Abaakouk
824 121 Mehdi Abaakouk
Ce script gére Debian, Ubuntu, Cirros, Openwrt, et vaguement Openbsd/Freebsd.
825 121 Mehdi Abaakouk
826 121 Mehdi Abaakouk
Seulement Debian est vraiment testé/utilisé régulièrement.
827 121 Mehdi Abaakouk
828 121 Mehdi Abaakouk
Ce doit s'occuper principalement de:
829 121 Mehdi Abaakouk
* télécharger l'image de base de la distribution
830 121 Mehdi Abaakouk
* installer les packages nécessaire au premier boot de la VM: ssh, tools pour resize les disques,
831 121 Mehdi Abaakouk
* configure le /etc/fstab ou équivalent
832 121 Mehdi Abaakouk
* configure le bootloader si besoin (Ajout une console serie pour avoir les logs dans openstack par example)
833 121 Mehdi Abaakouk
* configure sshd sur le port 2222
834 121 Mehdi Abaakouk
* supprime tout fichier temporary ou propre à la machine (clé sshd, 
835 121 Mehdi Abaakouk
* désactive fsck au boot
836 121 Mehdi Abaakouk
* ...
837 121 Mehdi Abaakouk
* *Crée un rc.local qui montera le CDROM, lancera la script qui est dessus, puis s'auto-détruira*: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/images/first_boot.sh
838 121 Mehdi Abaakouk
* ...
839 122 Mehdi Abaakouk
* shrink l'image/fs pour avoir un tout petit fichier à uploader et booter par la suite.
840 121 Mehdi Abaakouk
* uploader l'image dans openstack
841 121 Mehdi Abaakouk
842 121 Mehdi Abaakouk
Le script: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/images/build-image.sh
843 1 Mehdi Abaakouk
844 125 Mehdi Abaakouk
h3. Cas d'*BSD
845 1 Mehdi Abaakouk
846 122 Mehdi Abaakouk
La fabrication des images, nécessite une image de base que Openbsd ne fournit pas, il faut la fabriquer soit même.
847 124 Mehdi Abaakouk
Ensuite linux ne supporte pas toutes les variantes et versions du filesystem UFS. Ce qui rends difficile de modifier l'image à partir de la machine g1.
848 1 Mehdi Abaakouk
849 124 Mehdi Abaakouk
J'ai déjà fait une image OpenBSD 5.7 dans le passé mais faut quand meme de farcir une install de l'OS à la main, puis faire tout ce que fait build-image.sh manuellement
850 122 Mehdi Abaakouk
851 124 Mehdi Abaakouk
Pour l'ufs2 de FreeBSD, y'a https://github.com/mkatiyar/fuse-ufs2 (qu'utilise build-image.sh pour les BSD), mais pour OpenBSD ca me marche pas.
852 124 Mehdi Abaakouk
853 124 Mehdi Abaakouk
Création de l'image de base:
854 124 Mehdi Abaakouk
855 123 Mehdi Abaakouk
<pre>
856 123 Mehdi Abaakouk
qemu-img create -f qcow2 openbsd-6.3.qcow2 15G
857 123 Mehdi Abaakouk
wget https://cloudflare.cdn.openbsd.org/pub/OpenBSD/6.3/amd64/cd63.iso
858 123 Mehdi Abaakouk
859 123 Mehdi Abaakouk
qemu-system-x86_64 -m 2048 -hda openbsd-6.3.qcow2 -cdrom cd63.iso -enable-kvm -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7922-:22 -device e1000,netdev=mynet0 -smp 2 -vga qxl -spice port=5900,addr=127.0.0.1,disable-ticketing &
860 123 Mehdi Abaakouk
861 123 Mehdi Abaakouk
remote-viewer spice://localhost:5900
862 123 Mehdi Abaakouk
</pre>
863 123 Mehdi Abaakouk
864 123 Mehdi Abaakouk
Les questions importantes:
865 1 Mehdi Abaakouk
* X11 -> no
866 1 Mehdi Abaakouk
* com0 -> yes
867 1 Mehdi Abaakouk
* com0 speed -> 115200
868 1 Mehdi Abaakouk
* root login -> prohibit-password
869 1 Mehdi Abaakouk
* Partitionnement un seul rootfs: z, a, <enter>, <enter>, <enter, /, w, x
870 1 Mehdi Abaakouk
* sets: -x* -xgame*
871 124 Mehdi Abaakouk
* Reboot
872 124 Mehdi Abaakouk
873 124 Mehdi Abaakouk
<pre>
874 124 Mehdi Abaakouk
ssh root@localhost:7922
875 124 Mehdi Abaakouk
</pre>
876 124 Mehdi Abaakouk
877 124 Mehdi Abaakouk
Pour faire tous les manips du build-image.sh manuellement.
878 124 Mehdi Abaakouk
879 124 Mehdi Abaakouk
Puis uploader l'image manuellement dans Glance.
880 131 Fabien ADAM
881 131 Fabien ADAM
882 137 Fabien ADAM
h2. Dépannage Openstack
883 137 Fabien ADAM
884 137 Fabien ADAM
h3. Journaux
885 137 Fabien ADAM
886 137 Fabien ADAM
Les différents composants d'Openstack (nova, etc) envoient par défaut leurs journaux dans un répertoire leur correspondant. *Mais* pour trouver les journaux plus facilement, à Tetaneutral tous les journaux sont, à la place, envoyés dans @/var/log/openstack.log@.
887 137 Fabien ADAM
888 137 Fabien ADAM
Les journaux sont sur différentes machines :
889 137 Fabien ADAM
* chaque node (compute), hyperviseur des VMs qu'il fait tourner
890 137 Fabien ADAM
* le contrôleur d'Openstack (en VM), portant l'API et la base de données centralisée, sur le réseau à _openstack.tetaneutral.net_.
891 137 Fabien ADAM
892 137 Fabien ADAM
h3. Openstack est indisponible
893 131 Fabien ADAM
894 131 Fabien ADAM
L'API d'Openstack est installée sur une VM nommée *openstack* sous libvirt.
895 131 Fabien ADAM
896 131 Fabien ADAM
<pre>
897 131 Fabien ADAM
# Vérifier si la VM répond au ping
898 131 Fabien ADAM
ping -c1 openstack.tetaneutral.net
899 131 Fabien ADAM
# Vérifier sur quel serveur et dans quel état se trouve la VM
900 131 Fabien ADAM
for compute in $(echo n7 g{1..12}); do ssh $compute.t virsh list --all | grep openstack && echo $compute; done
901 131 Fabien ADAM
# Se connecter ensuite sur le server correspondant
902 131 Fabien ADAM
# Vérifier ce qui s'est passé sur la VM
903 131 Fabien ADAM
tail /var/log/libvirt/qemu/openstack.log
904 131 Fabien ADAM
# Si elle a crashé, la relancer
905 131 Fabien ADAM
virsh start openstack
906 131 Fabien ADAM
</pre>