Note This is a Work-In-Progress Document and the most up-to-date information is available at: github.com/memogarcia/openstack-deployer

Deploying OpenStack using containers allows easy customisation and flexibility on how to deploy the platform for development, testing and production environments.

Current deployment: stable/queens

Host configuration

The default configuration for this environment is composed by 3 main components that need to run on the host:

Docker will act as the control plane for OpenStack while the host will provide the hypervisor, network and storage.

host_diagram

Network topology

This is the default network topology, 2 networks are used:

  • openstack-management-net: All openstack traffic goes through here
  • openstack-provider-net: Instances get IPs in this network

simplified_network_diagram

Infra services

  • Fluentd: for logging
  • Cadvisor: for container stats
  • Elasticsearch: for log collection
  • Kibana: for log visualization
  • Portainer: for container management

Third-party services

Configure the third-party services needed for OpenStack to run.

OpenStack services

Extending OpenStack services

Deploying OpenStack

The model is a yml file describing how your environment should look like. It defines the services to run, networks, ips, volumes, dependencies, etc.

Configure your runtime environment by modifying model.yml.

Apply the configuration with config_processor, which will create the necessary scripts to run the environment.

ansible-playbook -i hosts/localhost config_processor.yml

Config processor will create a new branch deploy where the runtime configuration will be ready for deployment.

Verify the branch is created correctly.

git branch
# * deploy
git log
# Ready for deployment

Deploy OpenStack

./scripts/docker-network-create.sh
./scripts/build.sh
./scripts/start.sh

Verify installation

source osrc-v3
openstack project list
openstack image list
openstack network list
openstack server list

References

OpenStack installation Guide