Foreløpig er det ingen støtte for øyeblikksbildeplanlegging i Oderland Cloud , men du kan bruke OpenStack API for å løse det på egen hånd. Ved å bruke et bash-skript (eller et hvilket som helst annet språk du foretrekker) og en planleggingstjeneste som cron eller en systemd-timer, kan du automatisk ta øyeblikksbilder av alle monterte volumer på din virtuelle server.
Vi har skrevet et forslag til et slikt manus som du kan bruke som inspirasjon (to varianter over samme tema). Du må fylle inn alle variablene under kommentareneOpenStack credentials
ogVirtual server ID
(ogEmail settings
hvis du bruker varianten som sender post etter kjøring). Skriptet nedenfor vil iterere over alle volumer som er montert på serveren, ta et øyeblikksbilde av dem, sjekke status og deretter skrive ut resultatet i terminalen (samt sende en rapport på e-post hvis du ønsker det).
Data som trengs for skriptet
Før du kan sette opp og begynne å bruke bash-skriptet, trenger du litt informasjon om Cloud-kontoen din og serveren du vil lage øyeblikksbilder for:
- Påloggingsdetaljene for Cloud-kontoen din (brukernavn og passord). Hvis du ikke har disse, kan du få dem i henhold til instruksjonene her (avsnittet «Tilbakestill passordet»).
- Prosjekt-ID for Cloud-kontoen din. Du kan se dette når du er logget på Cloud-kontrollpanelet , øverst til høyre:
- Server-ID for serveren din. Du finner dette inne i Oderland Cloud-kontrollpanelet, hvis du går til
Compute
(ikonet som ser ut som en kube) ->Virtual machines
i menyen til venstre:
Klikk deretter på raden for serveren du vil lage øyeblikksbilder for og bla ned til radenID
i høyre del av vinduet.
Du har nå alt du trenger for å kunne lage skriptet i henhold til forslagene våre nedenfor.
Bash-skript for øyeblikksbilder
Når du har lastet ned all data i henhold til avsnittet ovenfor , kan du lage skriptet. Velg om du vil ha post fra skriptet eller ikke ved å kopiere versjonen av skriptet du ønsker nedenfor.
Skript som sender e-post med resultater
Kopier koden nedenfor til en fil på serveren som du for eksempel navngirsnapshot.sh
.
#!/bin/bash # OpenStack-legitimasjon eksport OS_AUTH_TYPE='passord' eksport OS_AUTH_URL='https://cloud-api.oderland.com:5000/v3/' eksport OS_DOMAIN_NAME='sky' eksporter OS_PASSWORD='CLOUDLÖSENORD
' eksporter OS_PROJECT_NAME='PROJEKT-ID
' eksport OS_USERNAME='CLOUDANVÄNDARNAMN
' # Virtuell server-ID server_id='SERVER-ID
' # E-postinnstillinger mottaker='' avsender='' smtp_password='' smtp_port='' smtp_server='' smtp_username='' # Avslutt på udefinerte variabler sett -uo pipefail # Se etter avhengigheter for dep i openstack mailx jq; gjøre hvis! hash "$dep" &> /dev/null; deretter printf 'Manglende kjørbar avhengighet: %s\n' "$dep" utgang 1 fi ferdig # Få navnet på den virtuelle serveren server_name=$(openstack server vis -c navn -f verdi "$server_id") # Få listen over volumer knyttet til den virtuelle serveren volume_list=$( openstack server vis -c volumes_attached -f json "$server_id" | jq -r '.volumes_attached[].id' ) # Variabel for å lagre resultatmeldingen result_message="" # Iterer over hvert volum og ta et øyeblikksbilde for volume_id i $volume_list; gjøre snapshot_name="snapshot-$(dato +" %Y% m %d% H %M% S")" # Lag øyeblikksbildet hvis openstack volum øyeblikksbilde opprette --volumet "$volume_id" --force "$snapshot_name" 1> /dev/null; deretter result_message+="Øyeblikksbilde ble opprettet for volumet $volume_id.\n" # Vent til øyeblikksbildet blir tilgjengelig timeout=60 elapsed_time=0 mens sant; gjøre snapshot_status=$(openstack volum øyeblikksbilde viser -c status --formatverdi "$snapshot_name") if [ "$snapshot_status" == "tilgjengelig" ]; deretter result_message+="Øyeblikksbilde $snapshot_name er tilgjengelig for volumet $volume_id.\n" gå i stykker fi sove 5 elapsed_time=$((elapsed_time + 5)) if [$elapsed_time -gi $timeout ]; deretter result_message+="Feil: Øyeblikksbilde $snapshot_name ble ikke tilgjengelig for volumet $volume_id innen tidsavbruddsperioden.\n" gå i stykker fi ferdig ellers result_message+="Feil ved opprettelse av øyeblikksbilde for volumet $volume_id.\n" fi ferdig # Send e-post med resultatet printf "$result_message" | mailx \ -s "Øyeblikksbilderesultat for $server_name" \ -S 'v15-compat' \ -S "mta=smtp://$smtp_brukernavn:$smtp_password@$smtp_server:$smtp_port" \ -S 'smtp-use-starttls' \ -S 'smtp-auth=login' \ -r "$sender" \ "$mottaker" printf "$result_message"
Ikke glem å gjøre filen som inneholder skriptkoden kjørbar:
chmod +x /path/to/snapshot.sh
Du kan nå teste å lage øyeblikksbilder ved å bruke skriptet ved å kjøre det:
/path/to/snapshot.sh
Skript som ikke sender e-post med resultater
Kopier koden nedenfor til en fil på serveren som du for eksempel navngirsnapshot.sh
.
#!/bin/bash # OpenStack-legitimasjon eksport OS_AUTH_TYPE='passord' eksport OS_AUTH_URL='https://cloud-api.oderland.com:5000/v3/' eksport OS_DOMAIN_NAME='sky' eksporter OS_PASSWORD='CLOUDLÖSENORD
' eksporter OS_PROJECT_NAME='PROJEKT-ID
' eksport OS_USERNAME='CLOUDANVÄNDARNAMN
' # Virtuell server-ID server_id='SERVER-ID
' # Avslutt på udefinerte variabler sett -uo pipefail # Se etter avhengigheter for dep i openstack jq; gjøre hvis! hash "$dep" &> /dev/null; deretter printf 'Manglende kjørbar avhengighet: %s\n' "$dep" utgang 1 fi ferdig # Få navnet på den virtuelle serveren server_name=$(openstack server vis -c navn -f verdi "$server_id") # Få listen over volumer knyttet til den virtuelle serveren volume_list=$( openstack server vis -c volumes_attached -f json "$server_id" | jq -r '.volumes_attached[].id' ) # Variabel for å lagre resultatmeldingen result_message="" # Iterer over hvert volum og ta et øyeblikksbilde for volume_id i $volume_list; gjøre snapshot_name="snapshot-$(dato +" %Y% m %d% H %M% S")" # Lag øyeblikksbildet hvis openstack volum øyeblikksbilde opprette --volumet "$volume_id" --force "$snapshot_name" 1> /dev/null; deretter result_message+="Øyeblikksbilde ble opprettet for volumet $volume_id.\n" # Vent til øyeblikksbildet blir tilgjengelig timeout=60 elapsed_time=0 mens sant; gjøre snapshot_status=$(openstack volum øyeblikksbilde viser -c status --formatverdi "$snapshot_name") if [ "$snapshot_status" == "tilgjengelig" ]; deretter result_message+="Øyeblikksbilde $snapshot_name er tilgjengelig for volumet $volume_id.\n" gå i stykker fi sove 5 elapsed_time=$((elapsed_time + 5)) if [$elapsed_time -gi $timeout ]; deretter result_message+="Feil: Øyeblikksbilde $snapshot_name ble ikke tilgjengelig for volumet $volume_id innen tidsavbruddsperioden.\n" gå i stykker fi ferdig ellers result_message+="Feil ved opprettelse av øyeblikksbilde for volumet $volume_id.\n" fi ferdig printf "$result_message"
Ikke glem å gjøre filen som inneholder skriptkoden kjørbar:
chmod +x /path/to/snapshot.sh
Du kan nå teste å lage øyeblikksbilder ved å bruke skriptet ved å kjøre det:
/path/to/snapshot.sh
Lag planlagte øyeblikksbilder
Nå som du har skriptet, kan du sette opp planlegging av øyeblikksbilder, slik at du ikke trenger å tenke på å lage dem manuelt. Den enkleste løsningen for dette er å sette opp en cronjob, som vi går gjennom nedenfor. Du kan også lage en systemd timer for planleggingen, men dette er ikke dekket i denne veiledningen.
Åpne cronjob-editoren:
crontab -e
Til slutt i crontab, skriv inn følgende for å planlegge løpeturen til 02:00 om natten hver dag. Du kan selvsagt legge inn andre tider, intervaller etc. – dette er bare et eksempel.
0 2 * * * /path/to/snapshot.sh
Fullfør deretter redigeringen av crontab.
Skriptet ditt vil nå kjøres av serveren på tidspunktet(e) du spesifiserte i cron-jobben.