OpenStack-Ansible: Deploying OpenStack with Ansible Roles
Ansible playbooks for deploying OpenStack. Mirror of code maintained at opendev.org.
At a glance
- What is it?
- OpenStack-Ansible is an official OpenStack project for deploying cloud environments from source through Ansible. It suits Linux system administrators who need repeatable OpenStack deployments, but its role, inventory, and dependency structure is more involved than a single application installer.
- Who is it for?
- Adopt OpenStack-Ansible when an operator is prepared to manage Ansible inventories, distributed role repositories, and OpenStack deployment documentation. Do not choose it for a lightweight workstation cloud or an unmanaged package-based setup.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 6, 2026, and from our analysis. They are not legal advice.
Star history
- openstack/openstack-ansible1,564 ★ · +3
| Repository | 2026-10-18 | 2026-11-06 |
|---|---|---|
| openstack/openstack-ansible | 1.6k | 1.6k |
3 Stars in the last 19 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What OpenStack-Ansible Handles
OpenStack-Ansible addresses the problem of turning a group of Linux machines into an OpenStack cloud while keeping the deployment represented as infrastructure code. Its audience includes developers and system administrators, as also stated by the Python package classifiers. The repository README describes the goal more narrowly as deploying production environments from source, with an emphasis on scalable operation, upgrades, and growth.
This is a deployment framework rather than the OpenStack services themselves. Its contents include playbooks, inventories, role requirements, test infrastructure, operational scripts, documentation, and a Python toolkit. That boundary matters for adoption. OpenStack-Ansible can organize installation and configuration work, but it does not remove the need to decide which OpenStack services the environment should contain, assign hosts, select configuration values, and plan service operations.
The project also targets POSIX-based Linux systems. That is an explicit package classification, not a general promise that every Linux distribution or every cloud host configuration is supported. Operators on unsupported host platforms should consult the current Deployment Guide before treating the repository as a portable installer.
How Playbooks, Inventories, and Roles Divide Responsibility
The repository layout shows a multi-layer Ansible project. The `playbooks/` directory contains execution material, while `inventory/` holds the input used to describe deployment hosts and groups. The repository also includes `ansible-role-requirements.yml` and `ansible-collection-requirements.yml`, showing that the deployment depends on separately declared Ansible content. The README makes the role split explicit: each supported individual role has its own repository at an `openstack-ansible-<ROLENAME>` source location.
This arrangement allows an operator to obtain and reason about a deployment as a set of role-specific units rather than treating every task as an inseparable collection of scripts. It also adds an adoption cost. The main repository is not the entire role implementation, so installing or mirroring only this repository does not make every deployment role available by itself. Ansible must obtain the declared roles and collections according to the project documentation.
The `osa_toolkit/` package adds supporting commands for inventory generation, inventory management, and release handling. Its `molecule/`, `tests/`, and `zuul.d/` directories indicate that the repository includes automated test infrastructure for its own behavior. These repository features support maintenance of the deployment framework, but they do not constitute evidence that a particular OpenStack service deployment has already succeeded on a given infrastructure provider.
AIO Quick Start and Detailed Deployment Guide
For a first real use, start with the all-in-one route only if its documented environment matches the intended evaluation. The README explicitly directs people testing an AIO build to the Quick Start at `https://docs.openstack.org/openstack-ansible/latest/user/aio/quickstart.html`. The sequence is therefore: select that guide, use it as the initial deployment procedure, and confirm that its prerequisites are acceptable before treating its result as a production design.
The README does not provide a compact installation command, host preparation command, or invocation for the AIO playbooks. It instead points to the external Quick Start, so reproducing an undocumented command here would risk producing a deployment procedure that does not match the project. The first actionable step supported by the repository content is to open the linked guide and follow its current instructions.
For a non-AIO or production-oriented deployment, use the Deployment Guide at `https://docs.openstack.org/project-deploy-guide/openstack-ansible/latest`. It is the designated source for detailed installation and operator documentation. The existence of both guides presents a useful choice: AIO reduces the conceptual distance to a first cloud, while the Deployment Guide is the appropriate entry point when host layout, service topology, and operator responsibilities need more precise treatment.
Python Packaging and Operational Commands
The Python package is named `openstack-ansible` and uses `pbr>=6.1.1` as its build-system requirement. The package metadata declares Apache-2.0 licensing and points to the OpenStack documentation, Launchpad bug tracker, Opendev repository, and release notes. Runtime dependencies are read dynamically from `requirements.txt`, so the package definition and the requirements file are both relevant when packaging the toolkit.
The `pyproject.toml` file registers three console entry points. Their names and Python targets are documented directly in the repository:
[project.scripts]
openstack-ansible-inventory = "osa_toolkit.generate:main"
openstack-ansible-inventory-manage = "osa_toolkit.manage:main"
openstack-ansible-releases = "osa_toolkit.releasing:main"These entries identify the toolkit's installed command names, but the README does not show their arguments or provide a first-use example. It would therefore be unsafe to invent flags for an inventory or release operation. A new operator should consult the relevant documentation rather than assume that these command names alone describe a complete procedure.
The optional `releases` dependency group contains `ruamel.yaml>=0.18` and `Jinja2>=3.0`. Its presence suggests a specific packaging path for release-related features, but the repository excerpt does not document how to install that extra or invoke the release command. This distinction prevents a common packaging mistake: installing the base package should not be presented as documented proof that every optional workflow is ready to use.
Deployment Constraints and Failure Modes
The clearest limitation is distribution across repositories. OpenStack-Ansible says that individual role source code lives in separate `openstack-ansible-<ROLENAME>` repositories, and the main tree carries role and collection requirement files. A deployment environment without the required access to those dependencies can therefore fail before useful OpenStack configuration begins. Pinning or mirroring dependencies is likely relevant in controlled environments, although the README does not prescribe one universal procedure.
The project is also not a minimal cloud distribution. It contains inventories, multiple deployment layers, scripts, testing configuration, and a broad operational documentation surface. That structure can be excessive for someone seeking a single command that installs a few services on one machine. The AIO guide narrows that first-use path, but the repository content does not establish that an AIO deployment should be copied directly into production.
Release management also requires attention. The GitHub mirror has no GitHub releases, while the project instead links to official release notes on `docs.openstack.org`. Operators should not infer that the absence of GitHub release artifacts means there are no upstream releases, nor should they treat `master` as a pinned deployment version merely because the README tells developers to base new work on the latest source. For controlled deployments, the exact source revision and compatible role dependencies need to be identified from the relevant documentation.
OpenStack-Ansible Compared with Package-Managed Installation
A real alternative is a distribution or vendor package workflow that installs OpenStack services through the platform's native package manager and manages configuration through packaged service files. The difference is architectural: OpenStack-Ansible models deployment through Ansible content, inventories, and external role repositories, while a package-oriented approach centers the operating system's package catalog and its configuration conventions.
OpenStack-Ansible is more relevant when the desired result is an explicit, repeatable source deployment organized around infrastructure automation. Its role boundaries and inventory model provide places to encode deployment choices. A package workflow may fit better when the target platform already publishes a supported OpenStack package set and the operator wants to stay within that distribution's lifecycle.
Neither path removes the need to design a cloud. OpenStack-Ansible supplies deployment automation and documentation, not a ready-made service topology. A package workflow may reduce integration work in some environments, but this repository does not contain a compatibility matrix that would justify choosing it for every Linux distribution. The decision should be based on the documented support and dependency model for the target platform.
Maintenance Signals, Upgrades, and Apache-2.0
The repository is not archived, and its last push was on 2026-10-14. Those are the available maintenance facts. There are no GitHub releases attached to the mirror, so release discovery depends on the official release-note documentation and upstream project resources rather than GitHub's release page.
Upgrading cannot be reduced to installing a newer Python package. The repository combines a main playbook project with separately sourced roles and collections, and it provides release-related tooling plus release notes. The README does not document a universal in-place upgrade command or a compatibility guarantee for moving between arbitrary OpenStack releases. An upgrade assessment therefore has to account for service versions, role versions, inventory changes, and the relevant OpenStack-Ansible release documentation.
The project metadata and README identify the license as Apache License, Version 2.0, and the repository includes `LICENSE.txt`. This confirms the declared licensing terms for the project. It does not, by itself, determine the licensing status of every external role, collection, OpenStack service, or operating-system package used during a deployment.
Editorial conclusion
Adopt OpenStack-Ansible when an operator is prepared to manage Ansible inventories, distributed role repositories, and OpenStack deployment documentation. Do not choose it for a lightweight workstation cloud or an unmanaged package-based setup. Verify first that the Quick Start or Deployment Guide matches the target services, Linux environment, inventory, and release policy required by the deployment.
Frequently asked questions
What is OpenStack-Ansible used for?
OpenStack-Ansible provides Ansible playbooks for deploying OpenStack environments from source. The README describes the target as production deployments designed to be scalable and straightforward to operate, upgrade, and extend.
How do I start with an all-in-one OpenStack-Ansible deployment?
The README directs testers to the Quick Start at `https://docs.openstack.org/openstack-ansible/latest/user/aio/quickstart.html`. It does not reproduce the AIO commands in the repository README.
Does the main OpenStack-Ansible repository contain every deployment role?
No. The README states that each supported individual role has a separate repository named using the `openstack-ansible-<ROLENAME>` pattern, and the main repository includes role and collection requirement files.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/openstack-openstack-ansible)Star history chart for your README
[](https://hysenlabs.com/projects/openstack-openstack-ansible)Was this useful?