Accessing OpenStack using the CLI
This method is for Linux-based Operating Systems.
There is a package that lets you do OpenStack operations in a UNIX terminal. A prerequisite to do this is to have a special file called the OpenStack OpenRC file, which has the credentials that let you run the text commands. This file can be downloaded from the OpenStack web console (top right menu).
"Sourcing" the file in a terminal within your local computer, shown below, will lead to the user having to input the password associated with the project and username specified in the rc file. With the right credentials, the user can then execute OpenStack commands:
source /path/to/your/openrc/file
You need to install the python application that allows you to enter the OpenStack CLI commands. See this page depending on the OS you use:
Ubuntu:
https://docs.openstack.org/install-guide/environment-packages-ubuntu.html
CentOS:
https://docs.openstack.org/install-guide/environment-packages-rdo.html
SUSE:
https://docs.openstack.org/install-guide/environment-packages-obs.html
Sample OpenRC file:
#!/usr/bin/env bash # To use an OpenStack cloud you need to authenticate against the Identity # service named keystone, which returns a **Token** and **Service Catalog**. # The catalog contains the endpoints for all services the user/tenant has # access to - such as Compute, Image Service, Identity, Object Storage, Block # Storage, and Networking (code-named nova, glance, keystone, swift, # cinder, and neutron). # # *NOTE*: Using the 3 *Identity API* does not necessarily mean any other # OpenStack API is version 3. For example, your cloud provider may implement # Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is # only for the Identity API served through keystone. export OS_AUTH_URL=http://openstack_endpoint_url:5000/v3/ # With the addition of Keystone we have standardized on the term **project** # as the entity that owns the resources. export OS_PROJECT_ID=SomeProjectHash export OS_PROJECT_NAME="openstack_proj_name" export OS_USER_DOMAIN_NAME="Default" if [ -z "$OS_USER_DOMAIN_NAME" ]; then unset OS_USER_DOMAIN_NAME; fi export OS_PROJECT_DOMAIN_ID="default" if [ -z "$OS_PROJECT_DOMAIN_ID" ]; then unset OS_PROJECT_DOMAIN_ID; fi # unset v2.0 items in case set unset OS_TENANT_ID unset OS_TENANT_NAME # In addition to the owning entity (tenant), OpenStack stores the entity # performing the action as the **user**. export OS_USERNAME="openstack_user_name" # With Keystone you pass the keystone password. echo "Please enter your OpenStack Password for project $OS_PROJECT_NAME as user $OS_USERNAME: " read -sr OS_PASSWORD_INPUT export OS_PASSWORD=$OS_PASSWORD_INPUT # If your configuration has multiple regions, we set that information here. # OS_REGION_NAME is optional and only valid in certain environments. export OS_REGION_NAME="RegionOne" # Don't leave a blank variable, unset it if it was empty if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi export OS_INTERFACE=public export OS_IDENTITY_API_VERSION=3
$OS_AUTH_URL will be the OpenStack controller node's URL; if using a string URL, ensure that /etc/hosts has the IP address for it or edit the script directly to substitute the string with the IP address. If you don't know the IP address, contact the HPC support team. So, edit this line by changing this:
export OS_AUTH_URL=http://openstack_endpoint_url:5000/v3/
to this (Note that the address below won't work; it's only to show as an example):
export OS_AUTH_URL=http://10.0.0.1:5000/v3/
To make the script work, source it, in your Linux terminal, and it will ask you for your password:
$ . openrc-user.sh
Once sourced and if the proper credentials are provided, you can run openstack commands such as:
openstack image list openstack server list
Center for Computational Sciences