-
API-käyttö
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 (oliotallennus), cinderiin (lohkopohjainen tallennus) ja neutroniin (verkotus).
OpenStack-rajapinnat ovat REST-rajapintoja, ja niiden kanssa voi toimia useilla tavoilla. Näitä ovat komentorivityökalujen (esim. openstack) käyttö, suorat HTTP-pyynnöt (esim. curl-työkalulla) sekä jokin asiakaskirjastoista (esim. openstacksdk).
Tässä artikkelissa tarkastelemme lyhyesti, miten cURLilla tehdään suoria HTTP-pyyntöjä OpenStack-rajapintoihin, ja siirrymme sitten katsomaan, 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 joitakin ympäristömuuttujia, 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:
Ja antamalla pyydettäessä CSC-käyttäjätunnuksesi käyttäjänimen ja salasanan. Tämän jälkeen voit tehdä pyyntöjä Pouta-pilveen. Tavallisesti aloitat tunnistautumalla näin:
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
Ja saat tunnisteesi vastauksen X-Subject-Token-otsakkeesta. Pyyntömme vastausrunko sisältää myös muuta hyödyllistä tietoa, kuten tunnisteen vanhenemispäivän ja -ajan muodossa "expires_at":"datetime".
Kun tunnistautuminen on tehty, voimme tehdä lisää CRUD-pyyntöjä eri rajapintoihin, jotka hallitsevat pilviresurssejamme. Voimme esimerkiksi pyytää laskentarajapinnalta luettelon saatavilla olevista virtuaalikoneiden flavor-tyypeistä näin:
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 OpenStackin eri komponenttien kanssa toimimiseen. SDK toteuttaa Python-sidonnat OpenStack-rajapintaan, mikä mahdollistaa automaatiotehtävien suorittamisen Pythonissa tekemällä kutsuja Python-olioihin sen sijaan, että tehtäisiin REST-kutsuja suoraan.
Jotta voimme käyttää sitä sovellustemme kanssa, meidän täytyy ensin asentaa SDK näin:
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 olevan jossakin seuraavista kansioista: current-hakemistossa, ~/.config/openstack-hakemistossa tai /etc/openstack-hakemistossa. 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
Sinun tulee lisätä salaisuudet, kuten salasana-kenttä, erilliseen tiedostoon nimeltä secure.yaml ja sijoittaa se samaan kansioon kuin clouds.yaml-tiedosto. secure.yaml-tiedoston tulee näyttää tältä:
Nyt voit suorittaa seuraavan yksinkertaisen esimerkin, joka listaa saatavilla olevat virtuaalikoneiden flavor-tyypit:
#!/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ä cPoudan käyttämien porttien luettelon täällä
Voit myös hakea tämän luettelon seuraavalla komennolla:
public-merkityt portit ovat ne, joita tarvitset.
Ulkoinen dokumentaatio
Yksityiskohtaisempaa tietoa löytyy OpenStack SDK -dokumentaatiosta.