Projet

Général

Profil

Openstack Management TTNN » Historique » Version 139

Mehdi Abaakouk, 05/06/2020 10:53

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