-
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 (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:
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:
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:
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ä:
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:
public-merkityt portit ovat ne, joita tarvitset.
Ulkoinen dokumentaatio
Tarkempia tietoja löytyy OpenStack SDK -dokumentaatiosta.