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