1. Home
  2. Cloud
  3. Hvordan planlegger jeg øyeblikksbilder i Oderland Cloud?

Hvordan planlegger jeg øyeblikksbilder i Oderland Cloud?

Denne veiledningen er ment for avanserte brukere.

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 tilCompute (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

Vær forsiktig hvor du lagrer skriptet, siden informasjonen i det gir tilgang til alle servere i din Oderland Cloud-konto.

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

Skriptet trenger pakkeneopenstack ,jq ogmailx å kunne løpe. Hvis du ikke har dem tilgjengelig, må de installeres først. Hvordan du gjør dette er ikke dekket i denne veiledningen.

Kopier koden nedenfor til en fil på serveren som du for eksempel navngirsnapshot.sh .

Pass på å erstatte innholdet iOS_PASSWORD ,OS_PROJECT_NAME ,OS_USERNAME ogserver_id til informasjonen du plukket opp som ovenfor .

Skriv også inn all forespurt informasjon under «E-postinnstillinger»-delen slik at e-post sendes med resultatene av kjøringen.

#!/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

Skriptet trenger pakkeneopenstack ogjq å kunne løpe. Hvis du ikke har dem tilgjengelig, må de installeres først. Hvordan du gjør dette er ikke dekket i denne veiledningen.

Kopier koden nedenfor til en fil på serveren som du for eksempel navngirsnapshot.sh .

Pass på å erstatte innholdet iOS_PASSWORD ,OS_PROJECT_NAME ,OS_USERNAME ogserver_id til informasjonen du plukket opp som ovenfor .

#!/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.

Was this article helpful?

Related Articles