This episode hones the two ways to operate OpenStack: navigating the Horizon Dashboard to manage projects, compute, network, volume, and identity through the GUI, then mastering the unified openstack CLI with the openrc environment file and JSON, table, and value output formats.

Up to episode 10, you operated OpenStack almost entirely through the CLI. But there's one door you haven't opened: Horizon, OpenStack's official web dashboard. Horizon isn't an alternative — it's another way of interacting with the same APIs. In this episode you'll become fluent in both.
Episode 11 covers both sides of operating OpenStack: navigating the Horizon Dashboard for visual management, and mastering the OpenStack CLI for automation and efficiency — including the openrc environment file, the unified openstack CLI, and output formatting for scripting.
Horizon organizes its UI to follow OpenStack's project structure. After logging in, you'll see a navigation panel with the main modules:
Project
├── Compute → Instances, Images, Key Pairs
├── Network → Topology, Networks, Routers, Floating IPs
├── Volume → Volumes, Snapshots, Backups
Identity → Projects, Users, Groups, Roles (admin)Every menu is a visual representation of the same APIs the CLI uses — understanding this map keeps you from getting lost in the UI.
openstack endpoint list --interface public --service dashboardOpen the dashboard URL (usually http://IP/dashboard), then follow the flow: Project > Compute > Instances > Launch Instance. Fill in a name, choose the image and flavor in the Source and Flavor tabs, pick the network in the Networks tab, then click Launch Instance. Within seconds the instance appears in the list — just like openstack server create.
The same pattern applies to networking: Project > Network > Networks > Create Network to create a network and subnet at once, or Project > Volume > Volumes > Create Volume to create a volume. The relationship between UI and CLI is one-to-one — every button in Horizon calls a single openstack command behind the scenes.
The CLI needs credentials every time it's called. Instead of typing --os-username over and over, OpenStack uses an environment file that you source:
source admin-openrc.sh
openstack token issue -f value -c idsource admin-openrc.sh exports variables such as OS_AUTH_URL, OS_USERNAME, OS_PROJECT_NAME, and OS_PROJECT_DOMAIN_NAME. DevStack provides openrc — in episode 0 you used source /opt/stack/devstack/openrc admin admin. Once sourced, every openstack command immediately knows the environment.
Since the Mitaka release, all services use one unified command:
| Category | Command |
|---|---|
| Identity | openstack project/user/role/domain ... |
| Compute | openstack server/flavor/keypair ... |
| Image | openstack image ... |
| Network | openstack network/subnet/router/port ... |
| Volume | openstack volume/snapshot ... |
| Object | openstack container/object ... |
openstack automatically determines the target service from the first sub-command. This simplifies operations that used to be scattered across separate clients like nova, neutron, and cinder.
The default CLI output is a table that's pleasant for humans but not for parsing. Use the format flags:
openstack server list -f table
openstack server list -f value -c ID -c Name
openstack server list -f json | jq '.[0].name'| Flag | Use |
|---|---|
-f table | Table, comfortable to read |
-f value | Raw values per column, for shell loops |
-f json | JSON, for processing with jq or Python |
The openstack server list -f value -c ID -c Name command outputs only ID and Name — perfect for scripting. The -f json combination with jq is the main weapon of OpenStack automation.
The practical rule: GUI for exploration and one-off operations, CLI for repeated operations and automation. You should be comfortable switching between them, because production uses both together — verify in Horizon, run mass operations in the CLI.
for id in $(openstack server list -f value -c ID); do
openstack server show "$id" -f value -c status
doneThe loop above uses -f value to get the IDs of all instances and then prints each one's status — a basic pattern you'll use for mass operations in production.
Episode 11 makes you master both faces of OpenStack: the Horizon Dashboard for visual navigation of projects, compute, network, volume, and identity, and the unified openstack CLI with the openrc environment file and -f table, -f value, and -f json output formats for efficient scripting.
Key takeaways:
source openrc prepares all CLI credentials.openstack CLI replaces separate per-service clients.-f value and -f json are the keys to automation.In episode 12, we'll cover Heat (Orchestration Service): Infrastructure as Code — defining your entire infrastructure in a declarative HOT template, understanding the heat_template_version YAML format, parameters, resources, and outputs, managing the stack lifecycle, and modern alternatives using the Terraform or OpenTofu OpenStack providers.