API Access — OpenStack
The official OpenStack Keystone endpoint is available at:
SysEleven IAM Specifics
Users:
- Authenticate via
OIDC - Log in using a browser with your SysEleven credentials
- Authenticate against OpenStack via JWT using the
openstack-s11authplugin
Service Accounts:
- Persistent machine identity, can have multiple credentials
- Organization-bound entity with similar permission set to users
- Authenticate via
Bearertokens - Authenticate against OpenStack as application credentials
OpenStack Setup
OpenStack Environment Variables
Remember to reset your OpenStack environment variables if needed:
This command will unset all variables starting withOS_.
To begin using OpenStack, you need to install the OpenStack client, which itself requires Python. We recommend using astral's uv package manager for installing Python and managing virtual environments.
Head to the official installation instructions to install uv.
Next, install the openstackclient as a uv tool and include the SysEleven library openstack-s11auth.
uv tool install \
--with openstack-s11auth \
--with python-manilaclient \
--with python-barbicanclient \
--with python-designateclient \
--with python-octaviaclient \
--upgrade python-openstackclient
netifaces Error
If you're seeing netifaces errors on Linux, please instruct uv to use Python 3.9:
Use openstack --help to verify that the installation was successful.
uv benefits
uvis a modern and efficient package manager for Python.- By using
uv toolto install the OpenStack client, you can useopenstackfrom your CLI, with all dependencies being constrained to a specific virtual environment. No morevenvhassle! - 💡 For an ephemeral setup, run e.g.
uvx --with openstack-s11auth --from python-openstackclient openstack --os-auth-url="https://keystone.cloud.syseleven.net:5000/v3" --os-auth-type="v3s11" project list --longto list your projects.
Be careful about conflicts with pip
If you have previously installed the OpenStack client via pip, please remove it before installing via uv to avoid conflicts. If you have existing Python installations, uv will simply use it, if not uv will even manage Python for you.
Of course, if you prefer to use other methods for managing your Python environment, you can do so.
Authentication
You can authenticate against OpenStack as a user, or a service account.
Using clouds.yaml
Obtain clouds.yaml from the SysEleven Dashboard
You can obtain your clouds.yaml file by using the SysEleven Dashboard.
Create a file at ~/.config/openstack/clouds.yaml with the following structure:
clouds.yaml for User Authentication
clouds:
SYS11_USER_AUTH_HAM1:
auth:
auth_url: "https://keystone.cloud.syseleven.net:5000/v3"
# project_id: "your_project_id" # if you want a default project id, set it here. Else, `export OS_PROJECT_ID=<your-project-id>` before running project-scope openstack commands
region_name: "ham1"
auth_type: "v3s11"
SYS11_USER_AUTH_DUS2:
auth:
auth_url: "https://keystone.cloud.syseleven.net:5000/v3"
# project_id: "your_project_id" # if you want a default project id, set it here. Else, `export OS_PROJECT_ID=<your-project-id>` before running project-scope openstack commands
region_name: "dus2"
auth_type: "v3s11"
Replace the placeholders with your actual credentials and project information.
Now, to use a specific configuration, set the OS_CLOUD environment variable:
Now you can use the openstack command without additional authentication steps:
Pro Tip
Using clouds.yaml allows you to easily switch between different OpenStack environments by changing the OS_CLOUD variable. This is especially useful when working with multiple projects or regions.
clouds.yaml for Service Account Authentication
##############################################################################################################################################
# This file was generated by Alloy Dashboard (2025-01-01T00:00:00.000Z) for the SysEleven Service Account 00000000-0000-0000-0000-000000000000
##############################################################################################################################################
#
# The entries under clouds correspond to an auth, project and region context.
# In this config, the keys follow the naming scheme <project_name>_<region_name>.
#
# You can add these entries to your existing clouds.yaml at ~/.config/openstack/clouds.yaml.
# Tools like python-openstackclient or the OpenStack Terraform Provider will read this file
# and use its information to authenticate against OpenStack.
#
# Valid directories that clients will search for clouds.yaml include:
# - current directory
# - ~/.config/openstack
# - /etc/openstack
#
# In order to select a specific configuration (auth, project and region), set the
# environment variable OS_CLOUD to the respective key, e.g. syseleven_project_dus2.
#
clouds:
syseleven_project_dus2:
auth_type: v3applicationcredential
auth:
auth_url: https://keystone.cloud.syseleven.net:5000/v3
application_credential_id: s11auth:<project_id>
application_credential_secret: s11_orgsa_<service_account_uuid>_<service_account_secret>
project_id: <project_id>
region_name: dus2 # or ham1
interface: public
identity_api_version: 3
Using Environment Variables
If you prefer, you can also use environment variables directly.
Environment Variables for User Authentication
unset $(set | grep OS_ | sed 's/=.*//')
export KEYSTONE_ORIGIN="https://keystone.cloud.syseleven.net:5000"
export OS_AUTH_URL="$KEYSTONE_ORIGIN/v3"
export OS_REGION_NAME=dus2 # or ham1
export OS_AUTH_TYPE=v3s11 # this requires the openstack-s11auth plugin to be installed
openstack project list --long
Environment Variables for Service Account Authentication
Service Account Credentials Required
To use a service account, please first create a service account.
unset HISTFILE
unset $(set | grep OS_ | sed 's/=.*//')
export KEYSTONE_ORIGIN="https://keystone.cloud.syseleven.net:5000"
export OS_AUTH_URL="$KEYSTONE_ORIGIN/v3"
export OS_REGION_NAME=dus2 # or ham1
export OS_AUTH_TYPE=v3applicationcredential
export OS_PROJECT_ID=c45fcc2570784820874b3f3657c8d36c # If you want to change the project your service account authenticates against, change this variable.
export OS_APPLICATION_CREDENTIAL_ID="s11auth:${PROJECT_ID}" # Service Accounts require the PROJECT_ID as a suffix, as not all clients respect OS_PROJECT_ID.
export OS_APPLICATION_CREDENTIAL_SECRET=s11_orgsa_<service_account_uuid>_<service_account_secret>
openstack network list
After setting these environment variables, you can use the openstack command-line tool to interact with your OpenStack environment.
Not seeing all projects?
When using the openstack project list command, you may notice that not all projects you have access to are immediately visible. This is because the OpenStack CLI only shows projects that have been previously accessed through our web interface. This behavior is due to the way our system integrates OpenStack with our Identity and Access Management (IAM) service.
Here's what you need to know:
- Projects become visible in the CLI after you've selected them at least once in the web interface.
- This process ensures that the necessary configurations are set up in Keystone (OpenStack's identity service) for each project you access. Note that you have access to the project, even if it may not yet be visible in the CLI. The SysEleven IAM is the leading system for all cloud services.
- We're actively working on improving this experience to make all your accessible projects visible in the CLI without requiring prior web interface interaction.
If you don't see a project you expect to have access to, try selecting it in the web interface first, then run the openstack project list command again. This should make the project visible in your CLI output.
We appreciate your understanding as we work to enhance this functionality and provide a more seamless experience across all interfaces.
Using Terraform with OpenStack
To use Terraform with OpenStack, refer to our Howto Guide or browse the terraform-examples repository for sample configurations and best practices (please note that you would have to adapt the examples to the new SysEleven IAM and regions DUS2/HAM1).
When using Terraform with SysEleven OpenStack, you must use Service Account with the OpenStack Editor permission, to authenticate. You can find always browse the provider documentation for the latest information.