...
Code Block |
---|
openstack volume list --all-projects --long -c Size -c Type -f value | grep <VOLUMETYPE> | awk '{split($0,a," "); sum += a[1]} END {print sum}' |
Rabbitmq
...
Finne alle security groups som er i bruk i et prosjekt
Code Block |
---|
kanin1#for rabbitmqadmini purge queue name=name_of_the_queue_to_be_purged |
Fjerne en node fra clusteret (f.eks hvis det har delt seg)
Code Block |
---|
kaninN# rabbitmqctl stop_app
kaninN# rabbitmqctl reset
## På dette tidspunktet er det lurt å sjekke rabbitmqctl cluster_status på en annen node, for å verifisere at clusteret ikke lenger er flere partitions
# Legg den til igjen
kaninN# rabbitmqctl start_app
kaninN# rabbitmqctl cluster_status # sjekk at alle er med, og det ikke er noen partitions |
Migrering av VMer på infra-noder som kjører KVM
Smørbrødliste med prereqs for å migrere VMer mellom infra-/api-noder som kjører KVM. Lista tar høyde for at du gjør migreringen med en personliggrupper som har nødvendige rettigheter for å arbeide med kvm/librt/qemu. Denne guiden forklarer migrering tunnellert over SSH av VMer uten delt lagring.
in $(openstack server list --sort-column Name -c Name -f value); do openstack server show -f json $i -c security_groups | jq '.security_groups[] | {name} | join("")'; done | sort | uniq |
Eksemplet antar at du er autha i et spesifikt prosjekt. Gjør du det der som admin, bør du hekte på --project <prosjektnavn>
i kommandoen som løkka itererer over.
Rabbitmq
Manually drain a queue
Code Block |
---|
kanin1# rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged |
Fjerne en node fra clusteret (f.eks hvis det har delt seg)
Code Block |
---|
kaninN# rabbitmqctl stop_app
kaninN# rabbitmqctl reset
## På dette tidspunktet er det lurt å sjekke rabbitmqctl cluster_status på en annen node, for å verifisere at clusteret ikke lenger er flere partitions
# Legg den til igjen
kaninN# rabbitmqctl start_app
kaninN# rabbitmqctl cluster_status # sjekk at alle er med, og det ikke er noen partitions |
Migrering av VMer på infra-noder som kjører KVM
Smørbrødliste med prereqs for å migrere VMer mellom infra-/api-noder som kjører KVM. Lista tar høyde for at du gjør migreringen med en personliggrupper som har nødvendige rettigheter for å arbeide med kvm/librt/qemu. Denne guiden forklarer migrering tunnellert over SSH av VMer uten delt lagring.
- root på noden du skal flytte fra må ha et SSH-nøklepar hvor public keyen er lagt i root på noden du skal flytte fra må ha et SSH-nøklepar hvor public keyen er lagt i ~/.ssh/authorized_keys for din egen bruker på noden du flytter til.
- Dette kan vel muligens egentlig fikse med puppet, men det kan selvfølgelig også fikses manuelt per behov...
- Opprett LVM-volumet for VMen som skal flyttes, på noden den skal flyttes til. Gjør gjerne dette i Virtual Machine Manager. Det er enklest.
- VMen som skal flyttes må være konfigurert med en CPU-model som er kompatibel med noden den skal flyttes til. Dersom den ikke er det, skru VMen av, velg en passende modell, og skru den på igjen.
...
Logg inn på KVM-hosten VMen kjører på, og kjør følgende kommando. Da blir VMens disk større
Code Block |
---|
root@infraN# lvextend -L +<NN>G /dev/vmvg/<vm-navn> |
Det virker som om VMene ikke helt klarer å få med seg at disken vokser. Derfor kan det være en god idé å skru den av og på igjen. (her dropper vi kommandoeksempel, for det tror vi de fleste vet hvordan man gjør)
VMene kjører også LVM. Derfor må vi utvide LVM-partisjonen:
VMens disk større
Code Block |
---|
root@infraN# lvextend -L +<NN>G /dev/vmvg/<vm-navn> |
Det virker som om VMene ikke helt klarer å få med seg at disken vokser. Derfor kan det være en god idé å skru den av og på igjen. (her dropper vi kommandoeksempel, for det tror vi de fleste vet hvordan man gjør)
VMene kjører også LVM. Derfor må vi utvide LVM-partisjonen:
Code Block |
---|
root@kulvm# parted /dev/vda
(parted) print
<snip>
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ext4 boot
2 1026MB 42.9GB 41.9GB extended
5 1026MB 5120MB 4095MB logical linux-swap(v1)
6 5121MB 42.9GB 37.8GB logical lvm
##### Her er partisjon 6 en del av den utvidede partisjon 2, derfor må vi først utvide 2, deretter 6.
(parted) resizepart 2
Warning: Partition /dev/vda2 is being used. Are you sure you want to continue?
Yes/No? yes
End? [42.9GB]? 100%
(parted) resizepart 6
End? [42.9GB]? 100% |
Code Block |
---|
root@kulvm# parted /dev/vda
(parted) print
<snip>
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ext4 boot
2 1026MB 4264.9GB4GB 4163.9GB4GB extended
5 1026MB 5120MB 4095MB logical linux-swap(v1)
6 5121MB 4264.9GB 37.8GB logical lvm
##### Her er partisjon 6 en del av den utvidede partisjon 2, derfor må vi først utvide 2, deretter 6.
(parted) resizepart 2
Warning: Partition /dev/vda2 is being used. Are you sure you want to continue?
Yes/No? yes
End? [42.9GB]? 100%
(parted) resizepart 6
End? [42.9GB]? 100%4GB 59.3GB logical lvm
(parted) printquit
<snip>
Number##### Og, Startvips har partisjonen End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ext4 boot
2blitt større |
Nå må vi fortelle LVM at partisjonen har vokst (vda6 er da tilsvarende partisjon 6 i forrige steg. Den kan finne på å ha et annet tall). Sjekk gjerne at den har ledig plass etter å ha kjørt resize.
Code Block |
---|
root@kulvm# pvresize /dev/vda6
Physical volume "/dev/vda6" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
root@kulvm# pvs
PV 1026MB VG 64.4GB 63.4GB extended
5 Fmt Attr PSize 1026MB PFree 5120MB
4095MB/dev/vda6 logicalkulvm-vg lvm2 linux-swap(v1)
6 5121MB 64.4GB 59.3GB logical lvm
(parted) quit
##### Og, vips har partisjonen blitt større |
Nå må vi fortelle LVM at partisjonen har vokst (vda6 er da tilsvarende partisjon 6 i forrige steg. Den kan finne på å ha et annet tall). Sjekk gjerne at den har ledig plass etter å ha kjørt resize.
Code Block |
---|
root@kulvm# pvresize /dev/vda6
Physical volume "/dev/vda6" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
root@kulvm# pvs
PV VG Fmt Attr PSize PFree
/dev/vda6 kulvm-vg lvm2 a-- 55.23g 20.00g |
Da gjenstår det bare å utvide det logiske volumet på VMen som trenger mer plass. Flagget -r
utvider filsystemet i samme slengen.
Code Block |
---|
root@kulvm# lvextend -L +20G -r /dev/kulvm-vg/var |
ipmitool
Code Block |
---|
apt install ipmitool |
Hvis den ikke oppfører seg:
Code Block |
---|
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
then you need to enable the following modules
modprobe ipmi_devintf
modprobe ipmi_si
|
SQL
Div kjekke SQL-spørringer som er mye raskere enn Openstack CLI og ei for-løkke
Hente info fra MISC-VMer
Code Block |
---|
# Hent alle kjørende VMer i SkyHiGh's MISC-prosjekt, og all metadata knyttet til VMene
MariaDB [nova]>
SELECT i.uuid,i.hostname,md.key,md.value FROM instances i INNER JOIN instance_metadata md ON i.uuid = md.instance_uuid WHERE i.project_id='d9c7305133b44e98b2cf74aca04cc610' AND i.deleted=0 ;
# Det eksemplet der var ikke så kult, fordi dette er også ganske raskt:
openstack server list --project MISC --long --fit-width -c ID -c Name -c Status -c Networks -c Properties
|
Hent alle prosjekter som har igjen færre enn N dager å leve
Hvor N er tallet (her eksempelvis 30) på slutten av spørringa
Code Block |
---|
|
MariaDB [keystone]>
SELECT name, extra FROM project WHERE domain_id=(SELECT id FROM project WHERE is_domain=1 AND name='NTNU') AND DATEDIFF(STR_TO_DATE(JSON_VALUE(extra,'$.expiry'),'%d.%m.%Y'),NOW()) <= 30; |
Hent alle prosjekter uten expiry satt
Code Block |
---|
MariaDB [keystone]>
SELECT name FROM project WHERE domain_id=(SELECT id FROM project WHERE is_domain=1 AND name='NTNU') AND extra NOT LIKE '%expiry%'; |
Mappe instans til VGPU-nummer når man ser på munin-grafer:
Code Block |
---|
MariaDB [munin-vgpu]>
select * from instancemapping where instance_id = '<instans-ID>'; |
Mappe instanser til en gitt VGPU-graf når man ser på munin-grafer:
Da gjenstår det bare å utvide det logiske volumet på VMen som trenger mer plass. Flagget -r
utvider filsystemet i samme slengen.
Code Block |
---|
root@kulvm# lvextend -L +20G -r /dev/kulvm-vg/var |
ipmitool
Code Block |
---|
apt install ipmitool |
Hvis den ikke oppfører seg:
Code Block |
---|
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory
then you need to enable the following modules
modprobe ipmi_devintf
modprobe ipmi_si
|
SQL
Div kjekke SQL-spørringer som er mye raskere enn Openstack CLI og ei for-løkke
Hente info fra MISC-VMer
Code Block |
---|
# Hent alle kjørende VMer i SkyHiGh's MISC-prosjekt, og all metadata knyttet til VMene
MariaDB [nova]>
SELECT i.uuid,i.hostname,md.key,md.value FROM instances i INNER JOIN instance_metadata md ON i.uuid = md.instance_uuid WHERE i.project_id='d9c7305133b44e98b2cf74aca04cc610' AND i.deleted=0 ;
# Det eksemplet der var ikke så kult, fordi dette er også ganske raskt:
openstack server list --project MISC --fit-width -c ID -c Name -c Status -c Networks -c Properties
|
Hent alle prosjekter som har igjen færre enn N dager å leve
Hvor N er tallet (her eksempelvis 30) på slutten av spørringa
Code Block |
---|
|
MariaDB [keystone]>
SELECT name, extra FROM project WHERE domain_id=(SELECT id FROM project WHERE is_domain=1 AND name='NTNU') AND DATEDIFF(STR_TO_DATE(JSON_VALUE(extra,'$.expiry'),'%d.%m.%Y'),NOW()) <= 30; |
Hent alle prosjekter uten expiry satt
Code Block |
---|
MariaDB [keystone]>
SELECT name FROM project WHERE domain_id=(SELECT id FROM project WHERE is_domain=1 AND name='NTNU') AND extra NOT LIKE '%expiry%'; |
Mappe instans til VGPU-nummer når man ser på munin-grafer:
Code Block |
---|
MariaDB [munin-vgpu]>
select * from instancemapping where instance_id = '<instans-ID>'; |
Mappe instanser til en gitt VGPU-graf når man ser på munin-grafer:
Code Block |
---|
MariaDB [munin-vgpu]>
select * from instancemapping where gpu = '<pci-e-ID>' and vgpu = '<VGPU-nr>' order by attached; |
Shiftleader
Triks for å mekke DNS til TTM4135-prosjekter
Prosjekter til dette emnet skal opprettes med scriptet createProjectTTM4135.sh
. Outputen her, er prosjekt som alle har tilgang på et felles nett, ttm4135
(lever i MISC), har en forhåndsallokert FIP fra ntnu-global, hvor FIPen er tagget med ttm4135
og TTM4135_V<år>_<gruppe>
.
Til slutt bruker vi shiftleader CLI for å mekke DNS-navn på formatet ttm4135-v<år>-<gruppe>.public.skyhigh.iik.ntnu.no
For å mekke DNS, gjøre vi følgende. Først, finn alle adressene og navnene
Code Block |
---|
openstack floating ip list -f value --tags ttm4135 --long -c 'Floating IP Address' -c Tags |
Formateringa blir litt jalla, men det fikser du med litt vim-triks. Smekk alt inn i ei fil på en shiftleader-boks, på formatet: (det er VIKTIG at _ erstattes med - fordi _ i DNS-navn går itte)
Code Block |
---|
<ip>,ttm4135-<semester>-<gruppe> |
Med den fila på plass, kan du gjøre følgende triks, for å mekke DNS-records
Code Block |
---|
for i in $(cat FILADI.txt); do /opt/shiftleader/manage.py dns_register --name $(echo $i | cut -d',' -f2).public.skyhigh.iik.ntnu.no --ipv4 $(echo $i | cut -d',' -f1); done |
Og da skal alt være i mål =)
Kanskje du får lyst til å slette de igjen når emnet er ferdig?
Code Block |
---|
for i in $(cat FILADI.txt | cut -d',' -f2); do /opt/shiftleader/manage.py dns_delete --name "${i}.public.skyhigh.iik.ntnu.no"; done |
Code Block |
---|
MariaDB [munin-vgpu]>
select * from instancemapping where gpu = '<pci-e-ID>' and vgpu = '<VGPU-nr>' order by attached; |