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.
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
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.
- Seed
- MariaDB/MySQL
- PostgreSQL Optional Database
- Memcached
- Rabbitmq
- Onos Optional SDN
- Minio Optional Object Storage
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