# Integrating with Kolla This guide describes how to integrate with Kolla. The main integration path is via docker-compose using docker-compose YML files. Each container set has a common YML and associated `openstack.env`. The `openstack.env` file describes the command line environment to pass to the docker-compose yml files. ## Why integrate with Kolla? Integrating with Kolla takes a hard part of managing an OpenStack system, specifically managing the container images, and places the burden on a third party project. We strive to do an excellent job of providing world-class OpenStack containers at least as a reference architecture, and possibly as what may be desirable to deploy into live production. ## Docker Command Line Arguments Every container set YML file includes the necessary docker CLI operations needed to launch the container in a tidy YML file. Instead of guessing which set of command line operations are needed per container, the docker-compose YML file can be used directly and will pass the appropriate command line values to the container on container start. The parameterized docker features used by kolla are: * --pid=host * --net=host * -v host:container * --privileged These parameterized features are not exposed to the user. Instead they are executed via docker-compose. ## Environment Variables Rather then document which individual containers require specific configuration variables, Kolla integration requires passing all configuration variables to all containers. This allows a simple method of ensuring every type of node (controller, storage, compute) receives the same configuration. ### Environment Variable KEY/VALUE pairs ADMIN_USER_PASSWORD= - The admin user password ADMIN_TENANT_NAME= - tenant name FLAT_INTERFACE= GLANCE_API_SERVICE_HOST= - address where glance API is running> GLANCE_DB_NAME= - DB name of glance service GLANCE_DB_PASSWORD= - GLANCE_DB_USER= - User name of glance in the database GLANCE_KEYSTONE_PASSWORD= - Keystone DB password GLANCE_KEYSTONE_USER= - Glance Keystone User GLANCE_REGISTRY_SERVICE_HOST= Glance registry service host KEYSTONE_ADMIN_PASSWORD= KEYSTONE_ADMIN_SERVICE_HOST= - IP Address of Keystone Host KEYSTONE_ADMIN_SERVICE_PORT=<5000> - Port where Keystone operates KEYSTONE_ADMIN_TOKEN= - A token used to access Keystone KEYSTONE_AUTH_PROTOCOL= - The keystone authentication protocol KEYSTONE_DB_PASSWORD= - The password used to access Keystone in the DB KEYSTONE_PUBLIC_SERVICE_HOST= - The IP address where Keystone is running MARIADB_ROOT_PASSWORD= - defines the MariaDB root password MARIADB_SERVICE_HOST= - The IP Address where Mariadb is running NETWORK_MANAGER= - Use Nova or Neutron networking NOVA_API_SERVICE_HOST= - The IP Address where the Nova API Service is hosted NOVA_DB_NAME= - The name of the nova entry in the database NOVA_DB_PASSWORD= - The password used to access nova NOVA_DB_USER= - The name of the nova DB password NOVA_EC2_API_SERVICE_HOST= - The IP Address where the Nova EC2 API is hosted arn't these two the same? NOVA_EC2_SERVICE_HOST= _ The IP Address where the Nova EC2 service is hosted NOVA_KEYSTONE_PASSWORD= - The Nova keystone password NOVA_KEYSTONE_USER= - The Nova keystone username HEAT_DB_NAME= - The heat DB name HEAT_DB_PASSWORD= - The heat db password HEAT_KEYSTONE_PASSWORD= - The keystone password for the heat user HEAT_API_SERVICE_HOST= - The IP Address where the Heat API service is hosted HEAT_API_CFN_SERVICE_HOST= - The IP Address where Heat will contact the heat-engine in search for meta data PUBLIC_INTERFACE= - The nova public interface PUBLIC_IP= - The IP Address of this host RABBITMQ_PASS= - The rabbitmq password used to join AMQP RABBITMQ_SERVICE_HOST= - The IP Address where the Rabbit service is running RABBITMQ_USER= - The RabbitMQ user name RABBIT_PASSWORD= - The RabbitMQ password RABBIT_USERID= - The RabbitMQ user id on the host ## Launching a container set Pick out a simple container set and launch it as follows: $ docker-compose -f compose/rabbitmq.yml up -d The third party deployment engine should launch the appropriate containers for the appropriate nodes. Note the `rabbitmq.yml` used in the example above expects an `openstack.env` file present in the current working directory. This file will be passed as environment data to the container and configure the container appropriately. # Conclusion Integrating with Kolla is as sample as creating an `openstack.env` file, having a deployment tool write the `openstack.env` file and .yml files to the nodes are targeted for deployment, and running docker-compose as described in the above documentation.