Deploying OpenStack using containers allows an easy customization and flexibility on how to deploy the platform for development, testing and production environments.
Current deployment: stable/queens
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.
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
- Fluentd: for logging
- Cadvisor: for container stats
- Elasticsearch: for log collection
- Kibana: for log visualization
- Portainer: for container management
Configure the third-party services needed for OpenStack to run.
- Seed
- MariaDB/MySQL
- PostgreSQL Optional Database
- Memcached
- Rabbitmq
- Onos Optional SDN
- Minio Optional Object Storage
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
source osrc-v3
openstack project list
openstack image list
openstack network list
openstack server list