Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
# Skru av VMen som ikke booter
# Ta en backup (uuid er VMens uuid fra nova)
cephmon1# rbd -p volumes export <uuid>_disk <filnavn>
# Kjør flatten (uuid er VMens uuid fra nova)
cephmon1# rbd flatten volumes/<uuid>_disk
# Skru den på igjen

 


Skru av reabalansering av OSDer

...

RDP trenger ikke nødvendigvis å godta innlogging uten passord, så det kan godt hende man må logge inn via konsollet i Horizon og sette nytt passord der.

Haproxy

To take a server out of haproxy rotation the following command can be used:

Code Block
titleDisable server in haproxy
root@servicelb3:~# echo "disable server bk_keystone_public/controller03" | nc -U /var/lib/haproxy/stats
 

Openstack

Fix instances stuck in powering-off or powering-on

Code Block
# Stuck powering-off?
nova reset-state --active <id>
openstack server stop <id>

# Stuck powering-on
nova reset-state <id>
Reset state for server <id> succeeded; new state is error
nova reset-state --active <id>
openstack server stop  <id>
openstack server start <id

List instances on all compute nodes on stack.it.ntnu.no

Code Block
tmp_file=/tmp/$$.stack.tmp
while true ; do
  rm /tmp/*.stack.tmp
  for a in $(seq -w 01 07);
    do echo compute$a  >> $tmp_file
    openstack server list --all --host compute$a >> $tmp_file
  done
  clear
  cat /tmp/bjarneskvms
  rm $tmp_file
  sleep 1
done

List all instances in a project

Code Block
openstack server list --project ntnu-00001

List all instances in a project with specified name

Code Block
openstack server list --project ntnu-00001 --name bjarneskvm-\*

Migrate all instances away from one node. Be sure that destination have capasity to receive. The break time is included for a safe time to hold ctrl+c

Code Block
from_node=compute07
to_node=compute04
for a in $(openstack server list --host $from_node --all -f value -c ID); do 
  do echo $a to $to_node
  openstack server migrate --block-migration --live $to_node --wait $a
  echo break
  sleep 3
  echo break
done

 

Specify virtual disk controller and/or virtual nic type

Windows does not ship with the virtio drivers. Since our installation always will default to virtio devices for i.e the virtual disk controller and the virtual network interface, the windows images in Glance needs to have these drivers pre-installed.

There may be situations where users want to upload existing Windows images without these drivers installed. To be able to boot them without adding these drivers, it is possible to change the virtual hardware devices:

Code Block
openstack image set --property hw_disk_bus='ide' <image-id>
openstack image set --property hw_vif_model='e1000' <image-id>

This commands will tell KVM/libvirt to use IDE disk controller and E1000 NIC. Be aware that this may reduce the virtual machine performance significantly!

Ping all routers in a given external network

Code Block
openstack port list -f value --long --network ntnu-[global|internal] | grep router | awk '{print $3}' | cut -d"'" -f2 | xargs -n1 ping -c2

Fix missing neutron dragents in BGP speakers

For some odd reason the BGP speakers seems to forget which neutron dragents they have been configured to include. Here's som troubleshooting tips. Typical symptom is that all the tenant IPv6 routes are gone..

Mappe disk-device til fysisk disk

Når vi har en døende disk, trenger man å mappe devicen i OSet til fysisk disk i serveren. Den mest idiotsikre måten å gjøre dette på:

Code Block
root@storageNNN# smartctl -i /dev/sd[abcdef...]
=== START OF INFORMATION SECTION ===
Vendor:               SEAGATE
Product:              ST4000NM0023
Revision:             GS11
Compliance:           SPC-4
User Capacity:        4,000,787,030,016 bytes [4.00 TB]
Logical block size:   512 bytes
LU is fully provisioned
Rotation Rate:        7200 rpm
Form Factor:          3.5 inches
Logical Unit id:      0x5000c500964af273
Serial number:        S1Z1VXJT
Device type:          disk
Transport protocol:   SAS (SPL-3)
Local Time is:        Wed Sep 21 09:45:11 2022 CEST
SMART support is:     Available - device has SMART capability.
SMART support is:     Enabled
Temperature Warning:  Disabled or Not Supported

Dette printer bl.a serienummer på disken. Den kan man finne igjen i iDRAC, og dermed finner man også den fysiske slot-en devicen/disken sitter i.


Haproxy

To take a server out of haproxy rotation the following command can be used:

Code Block
titleDisable server in haproxy
root@servicelb3:~# echo "disable server bk_keystone_public/controller03" | nc -U /var/lib/haproxy/stats
 

Openstack

List status of all vm's and which compute node

Code Block
for a in $(openstack compute service list -c Host | egrep -e "comp|gpu" | cut -d' ' -f2); do openstack server list --host $a --long -c ID -c Name -c Status -c Host --sort-column Host --all; done


Fix instances stuck in powering-off or powering-on

Code Block
# Stuck powering-off?
nova reset-state --active <id>
openstack server stop <id>

# Stuck powering-on
nova reset-state <id>
Reset state for server <id> succeeded; new state is error
nova reset-state --active <id>
openstack server stop  <id>
openstack server start <id


List instances on all compute nodes on stack.it.ntnu.no

Code Block
tmp_file=/tmp/$$.stack.tmp
while true ; do
  rm /tmp/*.stack.tmp
  for a in $(seq -w 01 07);
    do echo compute$a  >> $tmp_file
    openstack server list --all --host compute$a >> $tmp_file
  done
  clear
  cat /tmp/bjarneskvms
  rm $tmp_file
  sleep 1
done

List all instances in a project

Code Block
openstack server list --project ntnu-00001

List all instances in a project with specified name

Code Block
openstack server list --project ntnu-00001 --name bjarneskvm-\*

Migrate all instances away from one node. Be sure that destination have capasity to receive. The break time is included for a safe time to hold ctrl+c

Code Block
from_node=compute07
to_node=compute04
for a in $(openstack server list --host $from_node --all -f value -c ID); do 
  do echo $a to $to_node
  openstack server migrate --block-migration --live $to_node --wait $a
  echo break
  sleep 3
  echo break
done


Specify virtual disk controller and/or virtual nic type

Windows does not ship with the virtio drivers. Since our installation always will default to virtio devices for i.e the virtual disk controller and the virtual network interface, the windows images in Glance needs to have these drivers pre-installed.

There may be situations where users want to upload existing Windows images without these drivers installed. To be able to boot them without adding these drivers, it is possible to change the virtual hardware devices:

Code Block
openstack image set --property hw_disk_bus='ide' <image-id>
openstack image set --property hw_vif_model='e1000' <image-id>

This commands will tell KVM/libvirt to use IDE disk controller and E1000 NIC. Be aware that this may reduce the virtual machine performance significantly!


Ping all routers in a given external network

Code Block
openstack port list -f value --long --network ntnu-[global|internal] | grep router | awk '{print $3}' | cut -d"'" -f2 | xargs -n1 ping -c2


Fix missing neutron dragents in BGP speakers

For some odd reason the BGP speakers seems to forget which neutron dragents they have been configured to include. Here's som troubleshooting tips. Typical symptom is that all the tenant IPv6 routes are gone..

Code Block
# List all neutron dragents (you will need the ID)
$ openstack network agent list --sort-column Host --agent-type bgp
+--------------------------------------+---------------------------+---------------+-------------------+-------+-------+---------------------+
| ID                                   | Agent Type                | Host          | Availability Zone | Alive | State | Binary              |
+--------------------------------------+-----------
Code Block
# List all neutron dragents (you will need the ID)
$ openstack network agent list --sort-column Host --agent-type bgp
+--------------------------------------+---------------------------+----------------+---------------+-------------------+-------+-------+---------------------+
| 73d17a70-6d81-4b41-9a17-ea0b64fbbca8 | BGP dynamic routing agent | neutronnet1   | None              | :-)   | UP    | neutron-bgp-dragent |
| 181618ad-ec71-4dc2-8074-459ff691d032 | BGP dynamic routing agent | neutronnet2   | None              | :-)   | UP    | neutron-bgp-dragent |
| 990cfb8d-4f21-+48fa-9bd3------+-------+---------------------+
| ID  e1eed9f68b1f | BGP dynamic routing agent | neutronnet3   | None              | :-)   | UP    | neutron-bgp-dragent |
| f4cbef36-e812-41fc-acc2-57f0fc5e5604 | BGP dynamic routing agent | neutronv4bgp1 | None              | :-)   | UP    | neutron-bgp-dragent |
| 16546bec-d33a-4b44-8a0a-ac04b4fbc4af | BGP dynamic routing agent | neutronv4bgp2 | None              | :-)   | UP    | neutron-bgp-dragent |
| 8862c571-8e44-47a8-8e89-b091058497d8 | BGP dynamic routing agent | neutronv6bgp1 | AgentNone  Type            | :-)   | HostUP    | neutron-bgp-dragent |
| 088a8f05-fb6f-4e2d-8b0c-4dcb2166337f | BGP |dynamic Availabilityrouting Zoneagent | Aliveneutronv6bgp2 | State | Binary None              | :-)   | UP    | neutron-bgp-dragent |
+--------------------------------------+---------------------------+---------------+-------------------+-------+-------+---------------------+
| 73d17a70-6d81-4b41-9a17-ea0b64fbbca8 | BGP dynamic routing agent | neutronnet1   | None              | :-)   | UP    | neutron-bgp-dragent |
| 181618ad-ec71-4dc2-8074-459ff691d032 | BGP dynamic routing agent | neutronnet2   | None              | :-)   | UP    | neutron-bgp-dragent |
| 990cfb8d-4f21-48fa-9bd3-e1eed9f68b1f | BGP dynamic routing agent | neutronnet3   | None              | :-)   | UP    | neutron-bgp-dragent |
| f4cbef36-e812-41fc-acc2-57f0fc5e5604 | BGP dynamic routing agent | neutronv4bgp1 | None--------------+

# List the BGP speakers (you will need the name)
$ openstack bgp speaker list
+--------------------------------------+---------------+----------+------------+
| ID                     | :-)   | UP    | neutron-bgp-dragent |
| 16546bec-d33a-4b44-8a0a-ac04b4fbc4af | BGP dynamic routing agent | neutronv4bgp2 | None       | Name      | :-)   | Local UPAS | IP  | neutron-bgp-dragent |
| 8862c571-8e44-47a8-8e89-b091058497d8 | BGP dynamic routing agent | neutronv6bgp1 | None              | :-)   | UP    | neutron-bgp-dragent |
| 088a8f05-fb6f-4e2d-8b0c-4dcb2166337f | BGP dynamic routing agent | neutronv6bgp2 | None              | :-)   | UP    | neutron-bgp-dragentVersion |
+--------------------------------------+---------------+----------+------------+
| 33dc46ad-e6fc-4369-872e-b05436d320ee | bgpspeaker-v4 |    65102 |          4 |
| 4c7c1129-f7c4-4756-af32-3d57abe4dc77 | bgpspeaker-v6 |    65102 |          6 |
+--------------------------------------+---------------------------+---------------+-------------------+-------+-------+---------------------+

# List the BGPdragents speakerscurrently (youattached willto needa thegiven name)speaker
$ openstack bgp speaker listshow dragents bgpspeaker-v6
+--------------------------------------+---------------+----------+------------+
| ID                                   | NameHost          | Local ASState | IP VersionAlive |
+--------------------------------------+---------------+----------+------------+
| 33dc46ad088a8f05-e6fcfb6f-43694e2d-872e8b0c-b05436d320ee4dcb2166337f | bgpspeaker-v4neutronv6bgp2 | True   65102 |        :-)  4 |
| 4c7c11298862c571-f7c48e44-475647a8-af328e89-3d57abe4dc77b091058497d8 | bgpspeaker-v6neutronv6bgp1 |   True 65102 |   :-)       6 |
+--------------------------------------+-------+--------+-------+---+-----+-------+

# If some Listof the dragentsagents currentlyabove attachedare to a given speakermissing, re-add them:
$ openstack bgp speakerdragent showadd dragentsspeaker bgpspeaker8862c571-v6
+8e44-47a8-------------------------------------+---------------+-------+-------+
| ID                                   | Host          | State | Alive |
+--------------------------------------+---------------+-------+-------+
| 088a8f05-fb6f-4e2d-8b0c-4dcb2166337f | neutronv6bgp2 | True  | :-)   |
| 8862c571-8e44-47a8-8e89-b091058497d8 | neutronv6bgp1 | True  | :-)   |
+--------------------------------------+---------------+-------+-------+

# If some of the agents above are missing, re-add them:
$ openstack bgp dragent add speaker 8862c571-8e44-47a8-8e89-b091058497d8 bgpspeaker-v6

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.

  1. 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.
    1. Dette kan vel muligens egentlig fikse med puppet, men det kan selvfølgelig også fikses manuelt per behov...
  2. 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.
  3. 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.

Migreringen gjøres slik, på noden du skal flytte fra. VMen må være på. 

Code Block
$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose <vm-navn> qemu+ssh://<bruker>@<noden du skal flytte til>/system

VMen vil pauses under migreringen

Eksempel:

Code Block
$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose flyttevm qemu+ssh://foo@kjempefinserver.mitt.domene.er.be.st/system

Kjente og/eller mulige ymse problemer og triks

  • Vi har observert at VMer som migreres til ny host kan finne på å ta samme macvtap-interface som allerede kjørende VM. Det skaper åpenbart meget lite nettvirk når disse maskinen står på samtidig.
    • Hvilket macvtap-interface VMene har, kan sjekkes med virsh domiflist <vm-navn>
    • Løsning: Skru av begge VMene. Skru dem på igjen, én og én

 

  • Hvis du endret CPU-model for VMen på flyttefot, kan det være hyggelig å endre den tilbake når den er ferdig flyttet. "Copy host-model" er en fin variant.

Utvide disk på VMer på infra-/api-noder som kjører KVM

De aller fleste VMene på disse KVM-hostene klarer seg fint med de 20 kjempebitene vi bruker som standard. Allikevel hender det at behovet for fler kjempebiter melder seg. Da bør man følge denne oppskriften:

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:

8e89-b091058497d8 bgpspeaker-v6

Endre expiry dato på prosjekt

Code Block
openstack project set --property expiry='<dd.mm.yyyy>' <prosjekt id>


Hent totalt utdelte gigabyte av en gitt volumtype

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}'

Finne alle security groups som er i bruk i et prosjekt

Code Block
for i 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.

  1. 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.
    1. Dette kan vel muligens egentlig fikse med puppet, men det kan selvfølgelig også fikses manuelt per behov...
  2. 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.
  3. 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.

Migreringen gjøres slik, på noden du skal flytte fra. VMen må være på. 

Code Block
$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose <vm-navn> qemu+ssh://<bruker>@<noden du skal flytte til>/system

VMen vil pauses under migreringen

Eksempel:

Code Block
$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose flyttevm qemu+ssh://foo@kjempefinserver.mitt.domene.er.be.st/system

Kjente og/eller mulige ymse problemer og triks

  • Vi har observert at VMer som migreres til ny host kan finne på å ta samme macvtap-interface som allerede kjørende VM. Det skaper åpenbart meget lite nettvirk når disse maskinen står på samtidig.
    • Hvilket macvtap-interface VMene har, kan sjekkes med virsh domiflist <vm-navn>
    • Løsning: Skru av begge VMene. Skru dem på igjen, én og én


  • Hvis du endret CPU-model for VMen på flyttefot, kan det være hyggelig å endre den tilbake når den er ferdig flyttet. "Copy host-model" er en fin variant.

Utvide disk på VMer på infra-/api-noder som kjører KVM

De aller fleste VMene på disse KVM-hostene klarer seg fint med de 20 kjempebitene vi bruker som standard. Allikevel hender det at behovet for fler kjempebiter melder seg. Da bør man følge denne oppskriften:

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:

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.9GB4GB  3759.8GB3GB  logical                   lvm

##### Her er partisjon 6 en del av den utvidede partisjon 2, derfor  vi først utvide 2, deretter 6.
lvm
(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%
(parted) print
<snip>
Number  Start   End     Size    Typequit

##### 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        FileFmt system Attr PSize  PFree Flags
 1      1049kB  1024MB  1023MB  primary   ext4            boot
 2      1026MB  64.4GB  63.4GB  extended
 5      1026MB  5120MB  4095MB  logical   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 Properties

Info om utløpsdato på prosjekter

 /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 --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
languagesql
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
languagesql
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;