Learn OpenStack - Horizon Dashboard & OpenStack CLI Mastery
Episode 11 of 21

Learn OpenStack - Horizon Dashboard & OpenStack CLI Mastery

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Introduction

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 Web Dashboard

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.
  • Project > Network: Network Topology, Networks, Routers, Floating IPs, Security Groups.
  • Project > Volume: Volumes, Snapshots, Backups.
  • Identity: Projects, Users, Groups, Roles (admin only).
Horizon navigation map
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.

Creating an Instance Through the GUI

Open the Horizon dashboard
openstack endpoint list --interface public --service dashboard

Open 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.

Managing Networks and Volumes via the GUI

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.

OpenStack CLI Advanced Usage

The openrc Environment File

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 the environment file
source admin-openrc.sh
openstack token issue -f value -c id

source 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.

The Unified openstack CLI

Since the Mitaka release, all services use one unified command:

CategoryCommand
Identityopenstack project/user/role/domain ...
Computeopenstack server/flavor/keypair ...
Imageopenstack image ...
Networkopenstack network/subnet/router/port ...
Volumeopenstack volume/snapshot ...
Objectopenstack 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.

Output Formatting for Scripting

The default CLI output is a table that's pleasant for humans but not for parsing. Use the format flags:

Three output formats
openstack server list -f table
openstack server list -f value -c ID -c Name
openstack server list -f json | jq '.[0].name'
FlagUse
-f tableTable, comfortable to read
-f valueRaw values per column, for shell loops
-f jsonJSON, 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.

Combining UI and CLI

When to Use Which

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.

A small automation example
for id in $(openstack server list -f value -c ID); do
  openstack server show "$id" -f value -c status
done

The 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.

Summary

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:

  • Horizon is a web client of the same APIs the CLI uses.
  • Navigation map: Compute, Network, Volume, then Identity for admins.
  • source openrc prepares all CLI credentials.
  • The unified openstack CLI replaces separate per-service clients.
  • -f value and -f json are the keys to automation.
  • Use the GUI for exploration, the CLI for 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.

Learn OpenStack - Horizon Dashboard & OpenStack CLI Mastery | Learn OpenStack