OpenStack geeft je de mogelijkheid om een API te gebruiken voor het beheer van je OpenStack-project. Hiervoor heb je enkele gegevens nodig om via de API te kunnen authenticeren met je OpenStack-project. Deze gegevens vind je terug in de OpenStack Horizon-webinterface in een .rc bestand genaamd <jegebruikersnaam>-open-stack-openrc.sh en bestaan uit:
- AUTH_URL
- PROJECT_ID
- PROJECT_NAME
- USER_DOMAIN_NAME
- PROJECT_DOMAIN_ID
- USERNAME
- PASSWORD (via een prompt)
- REGION_NAME
Wanneer je gebruik maakt van de OpenStack command-line tools volstaat dit bestand. Maak je echter gebruik van de API, dan heb je de gegevens nodig in dit bestand, die je als volgt download:
Log in op de OpenStack Horizon-webinterface en klik rechtsbovenaan op je gebruikersnaam > 'OpenStack RC File v3'. Een download voor <gebruikersnaam>-open-stack-openrc.sh wordt gestart. Sla het bestand op in een locatie waar je makkelijk bij kunt.
Wanneer je het gedownloade bestand opent met een teksteditor vind je daar de eerder genoemde API-gegevens terug. Voor het gebruik van de OpenStack API kun je de API-documentatie van OpenStack raadplegen.
Let wel dat de Project Domain Name en Project Domain ID optioneel worden genoemd in de API-documentatie, maar één van beide verplicht is. In de inhoud van het RC-bestand dat je hebt gedownload vind je de Project Domain ID achter de regel 'export OS_PROJECT_DOMAIN_ID='. In het voorbeeld op de hierboven genoemde pagina zou je dus $OS_PROJECT_DOMAIN_NAME aanpassen naar $OS_PROJECT_DOMAIN_ID en dan de betreffende waarde meegeven, oftewel (let op de scrollbalk):
$ curl -v -s -X POST $OS_AUTH_URL/auth/tokens?nocatalog -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"],"password": {"user": {"domain": {"name": "'"$OS_USER_DOMAIN_NAME"'"},"name": "'"$OS_USERNAME"'", "password": "'"$OS_PASSWORD"'"} } }, "scope": { "project": { "domain": { "name": "'"$OS_PROJECT_DOMAIN_ID"'" }, "name": "'"$OS_PROJECT_NAME"'" } } }}' \ | python -m json.tool