Your submission was sent successfully! Close

You have successfully unsubscribed! Close

Learn about OpenStack services and their functions

1. Overview

Before you get started!

Welcome to OpenStack!

In this series of tutorials, we will walk you through all the necessary steps to install, configure and get started with OpenStack. Using just your workstation, you will learn how to use OpenStack for cloud infrastructure implementation purposes, from a single-node installation to large-scale clusters.

This tutorial is the third in the “Phase I - Single-node OpenStack on your workstation” series.

Explore other tutorials >

What is OpenStack?

OpenStack is the most popular open source cloud platform that aggregates distributed compute, network and storage resources in the data centre and enables on-demand provisioning of virtual machines through a self-service portal. OpenStack powers thousands of public and private clouds all over the world, providing rapid access for greater innovation and better economics.
Learn more about OpenStack >

What is MicroStack?

MicroStack is a micro cloud platform based on OpenStack, designed for the edge and small-scale data centre deployments, that can be installed and maintained with minimal effort. MicroStack eliminates the complexity behind OpenStack, providing an opinionated approach to OpenStack architecture design and a straightforward installation method.

Learn more about MicroStack >

What is Charmed OpenStack?

Charmed OpenStack is an enterprise cloud platform based on OpenStack, designed for large-scale data centre deployments, that provides full automation around the initial installation and day-2 operations. Charmed OpenStack abstracts the complexity behind OpenStack, using a composable approach to OpenStack architecture design with model-driven operators (charms).

Learn more about Charmed OpenStack >

In this tutorial, you will learn how to:

  • Distinguish between the various OpenStack services
  • Distinguish between the various OpenStack service endpoints
  • Distinguish between the various OpenStack service components
  • Use the OpenStack client to communicate with OpenStack services

You will only need:

One physical machine with:

MicroStack
These instructions use MicroStack - OpenStack in a snap. MicroStack is also available on other Linux distros, Windows and macOS. Refer to the MicroStack website for more information on how to install MicroStack on an OS other than Ubuntu.


2. List OpenStack services

OpenStack uses a modular architecture. It consists of multiple services that run in isolation and perform basic functions, such as mage catalogue maintenance, instance provisioning, etc.

To list all registered OpenStack services, execute the following command:

$ openstack --insecure catalog list

Sample output excerpt:

+-----------+-----------+--------------------------------------------------------------------------+
| Name      | Type      | Endpoints                                                                |
+-----------+-----------+--------------------------------------------------------------------------+
...
| keystone  | identity  | microstack                                                               |
|           |           |   internal: http://192.168.1.29:5000/v3/                                 |
|           |           | microstack                                                               |
|           |           |   public: http://192.168.1.29:5000/v3/                                   |
|           |           | microstack                                                               |
|           |           |   admin: http://192.168.1.29:5000/v3/                                    |
|           |           |                                                                          |
...
+-----------+-----------+--------------------------------------------------------------------------+

OpenStack services expose API endpoints, which are used to communicate with other services and to provide access for tenants through the OpenStack client and the OpenStack dashboard. Each service exposes three endpoints:

  • internal provides access for other OpenStack services.
  • admin provides access for the admin project.
  • public provides access for other projects.
    For security reasons, those might be bound to different IP addresses, subnets or even physical networks in more advanced scenarios.

Each OpenStack service consists of multiple components that run as separate processes, usually across different nodes in the cluster. Individual components of a single OpenStack service communicate with each other through the Message Queue.


3. Explore the Keystone service

Keystone is the OpenStack identity service. It manages domains, projects (which can be used to enable multi-tenancy in OpenStack) and user accounts. Moreover, Keystone provides authentication and authorisation functions.

To communicate with Keystone, you can use the OpenStack client. For example, to list all users created by Keystone, execute the following command:

$ openstack --insecure user list

Sample output:

+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 2c40c5a3c9794ab7844f1b39b7b0ceeb | admin     |
| a38de93e7bb646b1b34083021437884b | placement |
| 72f09459a4f949328f0b5ad61e870e27 | nova      |
| 964293fcb37a407ba612718530fb7a31 | neutron   |
| 5950182b76d84f15bb659279851ef0a7 | glance    |
| 0f7984c3f7074f389477450fb9832f29 | cinder    |
+----------------------------------+-----------+

As you can see, Keystone created the admin user as well as dedicated users for other OpenStack services.

To learn more about Keystone, refer to the tutorial “6. Identities”.


4. Explore the Glance service

Glance is the OpenStack image service. It manages the catalogue of cloud images that are used as templates for instance provisioning purposes.

To communicate with Glance, you can use the OpenStack client. For example, to list all images uploaded to Glance, execute the following command:

$ openstack --insecure image list

Sample output:

+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 2b79c445-4593-43bd-81b8-19b41a82011e | cirros | active |
+--------------------------------------+--------+--------+

As you can see, the CirrOS image has already been uploaded to Glance.

To learn more about Glance, refer to the tutorial “5. Templates”.


5. Explore the Neutron service

Neutron is the OpenStack network service. It manages virtual networks, subnets, and routers, as well as security groups and other resources. Neutron provides a programmable layer above common software-defined networking (SDN) solutions, seamlessly integrating with other OpenStack services.

To communicate with Neutron, you can use the OpenStack client. For example, to list all virtual networks created by Neutron, execute the following command:

$ openstack --insecure network list

Sample output:

+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 305e4536-42bf-4eb5-962c-d32e6b5b0b0f | external | 1a739e72-12c2-4eb1-9566-cf19ff217120 |
| 9ff32ace-fbd6-4370-8044-8077dba01ebb | test     | 019d7114-8911-40a8-944c-aa6684abde19 |
+--------------------------------------+----------+--------------------------------------+

As you can see, Neutron created two virtual networks: one for inter-project communication and another one for communication with the external world.

To learn more about Neutron, refer to the tutorial “8. Network”.


6. Explore the Nova service

Nova is the OpenStack compute service. It is responsible for instance scheduling, provisioning and termination. Nova provides a programmable layer above common hypervisors, seamlessly integrating with other OpenStack services.

To communicate with Nova, you can use the OpenStack client. For example, to list all hypervisors managed by Nova, execute the following command:

$ openstack --insecure hypervisor list

Sample output:

+----+---------------------+-----------------+--------------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP      | State |
+----+---------------------+-----------------+--------------+-------+
|  1 | MicroStack-Lab      | QEMU            | 192.168.1.29 | up    |
+----+---------------------+-----------------+--------------+-------+

As you can see, Nova currently manages one hypervisor, which is the workstation we installed MicroStack on.

To learn more about Nova, refer to the tutorials “5. Templates” and “9. Instances”.


7. Explore the Cinder service

Cinder is the OpenStack storage service. It is responsible for scheduling, creating and terminating persistent block storage volumes. Cinder provides a programmable layer above common software-defined storage (SDS) solutions, seamlessly integrating with other OpenStack services.

To communicate with Cinder, you can use the OpenStack client. For example, to list all volumes created by Cinder, execute the following command:

$ openstack --insecure volume list

Sample output:


As you can see, Cinder hasn’t created any volumes yet.

To learn more about Cinder, refer to the tutorial “10. Storage”.


8. Next steps

Congratulations! You have reached the end of this tutorial.

You can now move to the next tutorial - “4. Dashboard” - or explore other tutorials.

Take a survey!

Your feedback is very important for us and the entire OpenStack community. We want to understand how you use MicroStack and your pain points. Your feedback helps guide future MicroStack development.

Please fill in a short 5-question anonymous survey.

In this tutorial, you have learnt how to:

  • Distinguish between the various OpenStack services
  • Distinguish between the various OpenStack service endpoints
  • Distinguish between the various OpenStack service components
  • Use the OpenStack client to communicate with OpenStack services

Where to go from here?