Cluster with libvirt » Historique » Version 18
Matthieu Herrb, 16/09/2020 09:02
uuid
1 | 1 | Mehdi Abaakouk | {{>toc}} |
---|---|---|---|
2 | 1 | Mehdi Abaakouk | |
3 | 1 | Mehdi Abaakouk | h1. Cluster with libvirt |
4 | 1 | Mehdi Abaakouk | |
5 | 9 | Mehdi Abaakouk | |
6 | 9 | Mehdi Abaakouk | |
7 | 9 | Mehdi Abaakouk | |
8 | 9 | Mehdi Abaakouk | h2. Tooling |
9 | 9 | Mehdi Abaakouk | |
10 | 9 | Mehdi Abaakouk | <pre> |
11 | 9 | Mehdi Abaakouk | |
12 | 9 | Mehdi Abaakouk | # cd /root/tools/libvirt/ |
13 | 9 | Mehdi Abaakouk | |
14 | 9 | Mehdi Abaakouk | # ./autovirsh domuuid gizmo.sileht.net |
15 | 9 | Mehdi Abaakouk | Domain gizmo.sileht.net is on g3 |
16 | 9 | Mehdi Abaakouk | 4baace2f-6d7c-4575-8982-bedb6065ab6b |
17 | 9 | Mehdi Abaakouk | |
18 | 9 | Mehdi Abaakouk | # ./where www.tetaneutral.net |
19 | 9 | Mehdi Abaakouk | Domain www.tetaneutral.net is on g1 |
20 | 9 | Mehdi Abaakouk | |
21 | 9 | Mehdi Abaakouk | # ./create-vm --help |
22 | 9 | Mehdi Abaakouk | usage: create-vm --ip IP NAME |
23 | 9 | Mehdi Abaakouk | --image debian-buster-scsi |
24 | 9 | Mehdi Abaakouk | --ram 1 # SIZE in GiB |
25 | 9 | Mehdi Abaakouk | --vcpu 1 |
26 | 9 | Mehdi Abaakouk | --ip <IPV4> |
27 | 9 | Mehdi Abaakouk | --disk 20 # SIZE in GiB |
28 | 9 | Mehdi Abaakouk | --on g1 # short name of the host |
29 | 9 | Mehdi Abaakouk | |
30 | 9 | Mehdi Abaakouk | # ./migrate --help |
31 | 9 | Mehdi Abaakouk | usage: migrate NAME DEST |
32 | 9 | Mehdi Abaakouk | |
33 | 9 | Mehdi Abaakouk | |
34 | 10 | Mehdi Abaakouk | # ./info gizmo.sileht.net |
35 | 10 | Mehdi Abaakouk | Domain gizmo.sileht.net is on g3 |
36 | 10 | Mehdi Abaakouk | Interface Type Source Model MAC |
37 | 10 | Mehdi Abaakouk | ------------------------------------------------------- |
38 | 10 | Mehdi Abaakouk | tap249cbb03-b8 ethernet - virtio fa:16:3e:88:4d:0b |
39 | 10 | Mehdi Abaakouk | |
40 | 10 | Mehdi Abaakouk | Target Source |
41 | 10 | Mehdi Abaakouk | ------------------------------------------------ |
42 | 10 | Mehdi Abaakouk | hda ssds/97c925e4-9f3e-4b92-96b9-6190e0fc4b88_disk.config |
43 | 10 | Mehdi Abaakouk | sda ssds/volume-0973c10d-79c8-4906-9f9c-9ba33118203d |
44 | 10 | Mehdi Abaakouk | sdb disks/volume-3657e47a-07d8-4052-8dcf-cb7a0fb19b20 |
45 | 10 | Mehdi Abaakouk | |
46 | 10 | Mehdi Abaakouk | <config> |
47 | 10 | Mehdi Abaakouk | <tap name="tap249cbb03-b8">91.224.149.214</tap> |
48 | 10 | Mehdi Abaakouk | </config> |
49 | 10 | Mehdi Abaakouk | |
50 | 10 | Mehdi Abaakouk | |
51 | 10 | Mehdi Abaakouk | |
52 | 9 | Mehdi Abaakouk | </pre> |
53 | 9 | Mehdi Abaakouk | |
54 | 1 | Mehdi Abaakouk | h2. Fontionnement |
55 | 1 | Mehdi Abaakouk | |
56 | 1 | Mehdi Abaakouk | Les VM utilisent le mode ethernet de libvirt. En gros libvirt s'attends à trouver un tap tout près pour y accrocher la VM |
57 | 1 | Mehdi Abaakouk | |
58 | 1 | Mehdi Abaakouk | Just avant le boot de la VM libvirt lance: |
59 | 1 | Mehdi Abaakouk | |
60 | 1 | Mehdi Abaakouk | <pre> /etc/libvirt/hooks/qemu <VM_NAME> prepare begin</pre> |
61 | 1 | Mehdi Abaakouk | |
62 | 1 | Mehdi Abaakouk | Et juste après l'arret de la VM libvirt lance: |
63 | 1 | Mehdi Abaakouk | |
64 | 1 | Mehdi Abaakouk | <pre> /etc/libvirt/hooks/qemu <VM_NAME> release end</pre> |
65 | 1 | Mehdi Abaakouk | |
66 | 1 | Mehdi Abaakouk | |
67 | 1 | Mehdi Abaakouk | Le script /etc/libvirt/hooks/qemu de ttnn se trouve ici: https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/puppetmaster/revisions/master/entry/environments/production/manifests/files/openstack/libvirt-hooks-qemu |
68 | 2 | Mehdi Abaakouk | |
69 | 2 | Mehdi Abaakouk | |
70 | 2 | Mehdi Abaakouk | Ce script va lire les metadatas TTNN de <VM_NAME> (e.g: virsh metadata <VM_NAME> http://tetaneutral.net/) |
71 | 2 | Mehdi Abaakouk | |
72 | 2 | Mehdi Abaakouk | <pre> |
73 | 2 | Mehdi Abaakouk | $ virsh metadata ns2.tetaneutral.net http://tetaneutral.net/ |
74 | 2 | Mehdi Abaakouk | <config> |
75 | 7 | Mehdi Abaakouk | <network mode="routed"> |
76 | 7 | Mehdi Abaakouk | <tap name="tapb0b4a106-d0">89.234.156.248</tap> |
77 | 7 | Mehdi Abaakouk | <tap name="tapabababab-aa">89.234.156.45</tap> |
78 | 7 | Mehdi Abaakouk | </network> |
79 | 2 | Mehdi Abaakouk | </config> |
80 | 2 | Mehdi Abaakouk | </pre> |
81 | 2 | Mehdi Abaakouk | |
82 | 2 | Mehdi Abaakouk | Ensuite il va créé le tap et configurer les routes dessus avec les infos des metadata. |
83 | 1 | Mehdi Abaakouk | |
84 | 11 | Laurent GUERBY | h2. git |
85 | 11 | Laurent GUERBY | |
86 | 11 | Laurent GUERBY | https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools |
87 | 11 | Laurent GUERBY | |
88 | 11 | Laurent GUERBY | libvirt |
89 | 14 | Laurent GUERBY | |
90 | 14 | Laurent GUERBY | h2. Misc |
91 | 14 | Laurent GUERBY | |
92 | 14 | Laurent GUERBY | h3. Editer le disque d'une VM |
93 | 14 | Laurent GUERBY | |
94 | 15 | Laurent GUERBY | Mode lecture seule (sans danger) : |
95 | 14 | Laurent GUERBY | <pre> |
96 | 14 | Laurent GUERBY | VM=xxx |
97 | 14 | Laurent GUERBY | virsh shutdown $VM |
98 | 14 | Laurent GUERBY | virsh destroy $VM # si shutdown marche pas |
99 | 14 | Laurent GUERBY | guestfish --ro -i -d $VM |
100 | 15 | Laurent GUERBY | </pre> |
101 | 15 | Laurent GUERBY | |
102 | 15 | Laurent GUERBY | Pour par exemple desactiver cloud-init qui peut bloquer le boot : |
103 | 15 | Laurent GUERBY | |
104 | 15 | Laurent GUERBY | <pre> |
105 | 15 | Laurent GUERBY | guestfish -i -d $VM |
106 | 15 | Laurent GUERBY | ll /etc/cloud |
107 | 15 | Laurent GUERBY | touch /etc/cloud/cloud-init.disabled |
108 | 15 | Laurent GUERBY | exit |
109 | 14 | Laurent GUERBY | </pre> |
110 | 16 | Matthieu Herrb | |
111 | 16 | Matthieu Herrb | h3. Voir la console graphique sans spice-html5: |
112 | 16 | Matthieu Herrb | |
113 | 16 | Matthieu Herrb | Copier le script suivant 'ttnn-viewer' sur sa machine: |
114 | 16 | Matthieu Herrb | |
115 | 16 | Matthieu Herrb | <pre> |
116 | 16 | Matthieu Herrb | #!/bin/bash |
117 | 16 | Matthieu Herrb | vm=$1 |
118 | 16 | Matthieu Herrb | info=$(ssh g1.tetaneutral.net -p 2222 -l root -- "tools/libvirt/where $vm|cut -d' ' -f5") |
119 | 16 | Matthieu Herrb | |
120 | 16 | Matthieu Herrb | if [ x"${info}" == "x" ]; then |
121 | 16 | Matthieu Herrb | echo "Error VM $vm not found" |
122 | 16 | Matthieu Herrb | exit 1 |
123 | 16 | Matthieu Herrb | fi |
124 | 16 | Matthieu Herrb | |
125 | 16 | Matthieu Herrb | hypervisor=${info}.tetaneutral.net |
126 | 16 | Matthieu Herrb | spice_port=$(ssh ${hypervisor} -p 2222 -l root virsh domdisplay ${vm} | awk -F: '{print $3}') |
127 | 16 | Matthieu Herrb | |
128 | 16 | Matthieu Herrb | echo "$vm on $hypervisor port $spice_port" |
129 | 16 | Matthieu Herrb | ssh -N $hypervisor -p 2222 -l root -L 5910:localhost:${spice_port} & |
130 | 16 | Matthieu Herrb | pid=$! |
131 | 16 | Matthieu Herrb | |
132 | 16 | Matthieu Herrb | cleanup(){ |
133 | 16 | Matthieu Herrb | kill $pid |
134 | 16 | Matthieu Herrb | } |
135 | 16 | Matthieu Herrb | |
136 | 16 | Matthieu Herrb | trap cleanup EXIT |
137 | 16 | Matthieu Herrb | |
138 | 16 | Matthieu Herrb | sleep 2 |
139 | 16 | Matthieu Herrb | remote-viewer spice://localhost:5910/ |
140 | 16 | Matthieu Herrb | </pre> |
141 | 16 | Matthieu Herrb | |
142 | 16 | Matthieu Herrb | Puis |
143 | 16 | Matthieu Herrb | |
144 | 16 | Matthieu Herrb | <pre> |
145 | 16 | Matthieu Herrb | sudo apt-get install virt-viewer |
146 | 16 | Matthieu Herrb | ./ttnn-viewer puppet.tetaeutral.net |
147 | 16 | Matthieu Herrb | </pre> |
148 | 17 | Matthieu Herrb | |
149 | 17 | Matthieu Herrb | h3. Réinstallation/Réparation grub d'un VM |
150 | 17 | Matthieu Herrb | |
151 | 17 | Matthieu Herrb | |
152 | 17 | Matthieu Herrb | Récuperer l'id et l'hyperviseur de la VM |
153 | 17 | Matthieu Herrb | <pre> |
154 | 17 | Matthieu Herrb | g1# ./tools/libvirt/info VMNAME.tetaneutral.net | grep UUID |
155 | 17 | Matthieu Herrb | g1# ./tools/libvirt/where VMNAME.tetaneutral.net |
156 | 17 | Matthieu Herrb | </pre> |
157 | 17 | Matthieu Herrb | |
158 | 17 | Matthieu Herrb | Aller sur l'hyperviseur en question et arreter la VM (ici on considère qu'elle est plantée shutdown ne marche pas -> destroy) |
159 | 17 | Matthieu Herrb | <pre> |
160 | 17 | Matthieu Herrb | ssh -p 2222 root@gN |
161 | 17 | Matthieu Herrb | gN# virsh destroy VMNAME.tetaneutral.net |
162 | 17 | Matthieu Herrb | </pre> |
163 | 17 | Matthieu Herrb | |
164 | 18 | Matthieu Herrb | Bien attendre que la VM soit éteinte et taper (mettre l'UUID trouvé plus haut à la place de UUID) |
165 | 17 | Matthieu Herrb | <pre> |
166 | 18 | Matthieu Herrb | gN# virt-customize -v -d UUID --run-command 'update-grub ; grub-install /dev/sda;' |
167 | 17 | Matthieu Herrb | </pre> |
168 | 17 | Matthieu Herrb | |
169 | 17 | Matthieu Herrb | Enfin, restart la VM |
170 | 17 | Matthieu Herrb | <pre> |
171 | 17 | Matthieu Herrb | gN# virsh start VMNAME.tetaneutral.net |
172 | 17 | Matthieu Herrb | </pre> |