Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Poutan käyttö OpenStack-rajapintojen kautta

Tässä artikkelissa esitellään Poutan käyttöä OpenStack-rajapintojen kautta. OpenStack-rajapinnat tarjoavat pääsyn kaikkiin OpenStack-komponentteihin ja niiden resursseihin, kuten novaan (laskenta), glanceen (virtuaalikonelevykuvat), keystoneen (todennus), swiftiin (objektitallennus), cinderiin (lohkokäyttöinen tallennus) ja neutroniin (verkotus).

OpenStack-rajapinnat ovat REST-rajapintoja, ja niiden käyttämiseen on useita tapoja. Voit käyttää esimerkiksi komentorivityökaluja (esim. openstack), suoria HTTP-pyyntöjä (esim. curl) tai jotakin asiakaskirjastoa (esim. openstacksdk).

Tässä artikkelissa tarkastelemme lyhyesti, miten cURLilla tehdään suoria HTTP-pyyntöjä OpenStack-rajapintoihin, ja sen jälkeen katsomme, miten openstacksdk:ta voidaan käyttää joidenkin rutiinitehtävien automatisointiin esimerkinomaisesti.

Poutan käyttö cURLin kautta

Ennen kuin voimme käyttää cURLia tai muuta asiakasohjelmaa rajapintapyyntöjen tekemiseen, meidän täytyy asettaa ympäristömuuttujat, jotka sisältävät Poutan käyttöoikeustietomme. Tämä voidaan tehdä suorittamalla skripti, jonka voit ladata Poutan selainkäyttöliittymästä kirjautumisen jälkeen. Katso lisätietoja viimeisestä osiosta kohdasta OpenStack-työkalujen asentaminen.

Kun olet saanut selainkäyttöliittymästä käyttöoikeustietosi sisältävän skriptin (<project_name>-openrc.sh), voit lisätä ympäristömuuttujat suorittamalla skriptin näin:

source <project_name>-openrc.sh

Anna pyydettäessä CSC-käyttäjätunnuksesi käyttäjänimi ja salasana. Tämän jälkeen voit tehdä pyyntöjä Pouta-pilveen. Tavallisesti aloitat todentamalla itsesi seuraavasti:

curl -v -s  -H "Content-Type: application/json"   -d '
{"auth": {
    "identity": {
      "methods": ["password"],
      "password": {
        "user": {
          "name": "'$OS_USERNAME'",
          "domain": {"name": "'$OS_USER_DOMAIN_NAME'"},
          "password": "'$OS_PASSWORD'"
        }
      }
    },
    "scope": {
      "project": {
        "domain": {"id": "'$OS_PROJECT_DOMAIN_ID'"},
        "name": "'$OS_PROJECT_NAME'"
      }
    }
  }
}' "$OS_AUTH_URL/auth/tokens?nocatalog" | python -m json.tool

Saat tokenisi vastauksen X-Subject-Token-otsakkeesta. Pyyntömme vastausrunko sisältää myös muuta hyödyllistä tietoa, kuten tokenin vanhenemispäivän ja -ajan kentässä "expires_at":"datetime".

Kun todennus on tehty, voimme tehdä lisää CRUD-pyyntöjä eri rajapinnoille pilviresurssiemme hallintaa varten. Voimme esimerkiksi pyytää laskentarajapinnalta listan saatavilla olevista virtuaalikoneiden flavor-vaihtoehdoista seuraavasti:

export OS_TOKEN=<copy-your-token-here>
export OS_COMPUTE_API=https://pouta.csc.fi:8777/v2.1
curl -s -H "X-Auth-Token: $OS_TOKEN" \
  $OS_COMPUTE_API/flavors \
  | python -m json.tool

Voit tarkistaa Poutan selainkäyttöliittymästä oikeat arvot Poutan rajapintojen päätepisteille, kuten OS_COMPUTE_API.

Poutan käyttö asiakaskirjastojen kautta

Openstacksdk on asiakaskirjasto (SDK) OpenStack-pilvien kanssa toimivien sovellusten ja palveluiden rakentamiseen. Se tarjoaa yhtenäisen ja kattavan ominaisuusjoukon eri OpenStack-komponenttien käyttämiseen. SDK toteuttaa Python-sidonnat OpenStack-rajapintaan, mikä mahdollistaa automaatiotehtävien suorittamisen Pythonissa tekemällä kutsuja Python-olioille sen sijaan, että tekisit REST-kutsuja suoraan.

Jotta voimme käyttää sitä sovelluksissamme, meidän täytyy ensin asentaa SDK seuraavasti:

pip install openstacksdk

Seuraavaksi meidän täytyy tarjota asetukset ja käyttöoikeustiedot clouds.yaml-tiedoston kautta, jonka voi ladata Poutan selainkäyttöliittymästä kirjautumisen jälkeen. Openstacksdk odottaa tämän tiedoston löytyvän jostakin seuraavista kansioista: current-hakemistosta, ~/.config/openstack-hakemistosta tai /etc/openstack-hakemistosta. clouds.yaml näyttää tältä:

clouds:
  openstack:
    auth:
      auth_url: https://pouta.csc.fi:5001/v3
      username: "username"
      project_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      project_name: "project_xxxxxx"
      user_domain_name: "Default"
    regions:
    - regionOne
    interface: "public"
    identity_api_version: 3

Lisää salaisuudet, kuten salasanaa vastaava kenttä, erilliseen tiedostoon nimeltä secure.yaml ja sijoita se samaan kansioon kuin clouds.yaml. secure.yaml-tiedoston tulee näyttää tältä:

clouds:
  openstack:
    auth:
      password: XXXXXXXXXX

Nyt voit suorittaa seuraavan yksinkertaisen esimerkin, joka listaa saatavilla olevat virtuaalikoneiden flavor-vaihtoehdot:

#!/usr/bin/python3
import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize cloud
conn = openstack.connect(cloud='openstack')

# list VM flavors  
for flavor in conn.compute.flavors():
    print(flavor.to_dict())

Käytössä olevien porttien listaaminen

Voit nähdä cPoudassa käytetyt portit täällä
Voit myös hakea tämän listan seuraavalla komennolla:

openstack catalog list

public-merkityt portit ovat ne, joita tarvitset.

Ulkoinen dokumentaatio

Tarkempia tietoja löytyy OpenStack SDK -dokumentaatiosta.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta