Skip to content

Ansible playbook for OpenStack with roles for keystone, nova, placement, neutron, swift and horizon

License

Notifications You must be signed in to change notification settings

baroxx/rhel8-openstack-ansible

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RHEL8 OpenStack Ansible

This project uses Ansible to setup an OpenStack cluster with the services listed below.

  • Core services

    • Keystone - for identity management
    • Glance - for images
    • Nova and Placement - for instances
    • Neutron - for networking
  • Optional services

    • Swift - for object storage
    • Cinder - for block storage (please read the readmes of the roles)
    • Barbican - for key management
    • Trove - for databases
    • Heat - for orchestrations
    • Magnum - for container orchestration
    • Horizon - OpenStack UI

This project for RHEL8 Kickstart provides kickstart files to automate the installation of the nodes. There are also scripts to create some virtual machines.

Prerequisites

The following packages are required on RHEL8:

  • ansible-collection-ansible-posix for SELinux updated
  • ansible-collection-community-mysql for database queries
  • ansible-collections-openstack for project, service, endpoint, user and role management

There should be at least one controll node and two compute nodes (three object nodes). Each target must be accessible via SSH and requires passwordless sudo rights.

Swift uses directories on the object nodes as storage. The roles/role for the rings creates rings for all storage devices set in vars/config.yml (object_storage). Each object node can have multiple storage devices. The mount point for these storage devices must be at /srv/node/

Prepare and Run

Preperation:

  1. Install required ansible packages on the local machine
  2. Prepare passwordless SSH and sudo on all nodes
  3. Swift: Prepare mount points for storage devices on object nodes (only for Swift)
  4. Select the roles in vars/service-selection.yml
  5. Rename vars/secrets-tmp.yml to vars/secrets.yml and enter your secrets
  6. Update the variables in vars/config.yml (at the moment only a setup with a singe controller node is supported)
  7. Set the IPs (or ssh hosts from ~/.ssh/config) in inventory

Run:

ansible-playbook openstack.yml

Roles

You can find more information in the README of the roles. You should install at least the core services mentioned at the top of this README.

It is recommended to use the roles in this order.

OpenStack module

This project uses the OpenStack module

Copyright

The config files in this repository are adjusted files based on the default configs on RHEL8 with RDO. local_settings is provided by OpenStack and adjusted in this project.