Build Your own Private Cloud with OpenStack

Sonam Kumari Singh
6 min readDec 27, 2023

What is Cloud computing & Type of ?

Cloud computing means, storing the files on a hard drive or local storage unit, we can save the files on a remote database via cloud-based storage. In other words, we can say cloud computing means the delivery of computing services, such as servers, software, networking, analytics, intelligence, and databases over the internet or the cloud. It offers flexible resources, faster innovation, and economics of scale.

Three major forms of cloud computing exist. These are:

IaaS( Infrastructure as a service )

SaaS( Software as a service )

PaaS( Platform as a service )

OpenStack

OpenStack is an open-source and free software platform. It is mostly deployed as infrastructure-as-a-service (IaaS) in both public and private clouds where virtual servers and other resources are made available to users. The software platform consists of interrelated components that control diverse, multi-vendor hardware pools of processing, storage, and networking resources throughout a data center. Users manage it either through a web-based dashboard, through command-line tools, or through RESTful web services.

In OpenStack, the tools which are used to build this platform are referred to as “projects”. These projects handle a large number of services including computing, networking, and storage services. Unlike virtualization, in which resources such as RAM, CPU, etc are abstracted from the hardware using hypervisors, OpenStack uses a number of APIs to abstract those resources so that users and the administrators are able to directly interact with the cloud services.

OpenStack is distributed as a set of packages, and users can choose to deploy the specific projects or services they need. Deployment can be done on physical servers or virtual machines. Tools like DevStack, Packstack, and others help automate the installation and configuration of OpenStack on a set of servers.

Components of OpenStack

Apart from various projects which constitute the OpenStack platform. Here is the basic definition of all the components which will give us a basic idea about these components.

  1. Nova (compute service): It manages the compute resources like creating, deleting, and handling the scheduling. It can be seen as a program dedicated to the automation of resources that are responsible for the virtualization of services and high-performance computing.
  2. Neutron (networking service): It is responsible for connecting all the networks across OpenStack. It is an API driven service that manages all networks and IP addresses.
  3. Storage (Cinder and Swift):
    Cinder
    : Cinder is the block storage service in OpenStack. It manages the creation and attachment of block devices to instances, offering scalable and persistent storage for virtual machines.
    Swift: Swift is the object storage service, designed for storing and retrieving large amounts of unstructured data. It provides a scalable and redundant storage solution suitable for a variety of applications.
  4. Keystone (identity service provider): It is responsible for all types of authentications and authorizations ( like — AWS Styles logins, token-based systems, and checking the other credentials (username & password)) in the OpenStack services. It is a directory-based service that uses a central repository to map the correct services with the correct user.
  5. Glance (image service provider): Glance manages virtual machine images. It is responsible for registering, storing, and retrieving virtual disk images from the complete network & making it easier to deploy instances with predefined operating system configurations. These images are stored in a wide range of back-end systems.
  6. Horizon (dashboard): It is responsible for providing a web-based interface for OpenStack services. It allows administrators and users to interact with and manage OpenStack resources through a graphical interface, simplifying the process of provisioning and monitoring cloud resources.
  7. Ceilometer (telemetry): It is responsible for metering and billing of services used. Also, it is used to generate alarms when a certain threshold is exceeded.
  8. Heat (orchestration): It is used for on-demand service provisioning with auto-scaling of cloud resources. It works in coordination with the ceilometer.
  9. Shared File System (Manila): It offers storage of the file to a virtual machine. This component gives an infrastructure for managing and provisioning file shares.
  10. Elastic Map-reduce (Sahara): The Sahara component offers a simple method to the users to preplanned Hadoop clusters by referring to the multiple options such as the Hadoop version, cluster topology and hardware details of nodes and some more.

How does OpenStack Work ?

OpenStack is a series of commands which is called scripts. And these scripts are packed into packages, which are called projects that rely on tasks that create cloud environments.

Let’s discuss how OpenStack works!

As we know, the Horizon is an interface for the appliance environment. Anything that the user wants to do should use the Horizon (Dashboard). The Dashboard is a simple graphical user interface with multiple modules, where each module performs specific tasks.

All the actions in OpenStack work by the service API call. So, if you are performing any task, it means you are calling a service API. Each API call is first validated by Keystone. So, you will have to login yourself as a registered user with your login username and password before you enter the OpenStack dashboard.

Once you successfully log in to the OpenStack dashboard, you will get many options to create new instances, volumes, Cinder, and configure the network.

Instances are nothing but a virtual machine or environment. To generate a new VM, use the ‘instances’ option from the OpenStack dashboard. In these instances, you can configure your cloud. Instances can be RedHat, OpenSUSE, Ubuntu, etc.

The formation of an instance is also an API call. You can configure network information in the instances. You can connect these instances to the cinder instance or volume to add more services.

After the successful creation of an instance, you can configure it, you can access it through CLI, and whatever data you want to add, you can do it. Even you can set up an instance to manage and store the snapshots for future reference or backup purposes.

What Are The Benefits of Using OpenStack?

OpenStack cloud solutions provide several benefits for businesses that have or are seeking to virtualize elements of their infrastructure or services. Some of these include:

  1. Improving business agility
  2. Increasing the efficiency of core processes
  3. Enhancing the availability of resources
  4. Adding flexibility and adaptability to your infrastructure

With OpenStack, you can construct your own cloud infrastructure. This may be useful for organizations that do not want to expose sensitive data, proprietary information, or the structure of their network with someone helping them set up or implement a web service like Microsoft Azure, Salesforce, or Amazon Web Services (AWS).

These capabilities make the following benefits possible:

  • Scalability: scale as you grow as per current needs, add more compute nodes to the IaaS environment as demand increases.
  • Managing availability: detect real-time failures, ensure business continuity.
  • Flexibility: use only components the business needs, meet a broad range of enterprise apps.
  • Interoperability: connect multiple and varied components, hardware, and software.
  • Cost control: pay for what you use model, no more no less.
  • Reliability: improved performance and speed quality.
  • Security: prevent and manage security threats.
  • Enable Innovation: add new capabilities and leverage APIs.
  • Strong community: constant product development in a competitive marketplace.

Conclusion:
In the above article we discussed about various usecases and features of OpenStack. Stay tuned for more such blogs !!

--

--

Sonam Kumari Singh

SONAM here! Grateful for your connection! Tech enthusiast exploring new languages, deep into DevOps, with a spotlight on Linux. 😊🚀