Deploying OpenStack with Docker
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
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.
- PostgreSQL Optional Database
- Onos Optional SDN
- Minio Optional Object Storage
Extending OpenStack services
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
./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