I’ve worked with kolla-ansible for over the year, currently on rocky version. I’ve done some work which can maybe be intersting to community.
1. Proposal - Adding additional functionality to kolla-ansible playbook
For functionalities which are not officially supported by kolla-ansible group, but are done by any individual or a group and are interesting for a community.
Each additional functionality has its own GIT project. It consists of one or more ansible roles. The structure of project is very similar to the kolla-ansible project.
addfunct-name / README.md
/ etc / kolla / globals.yml
/ passwords.yml
/ ansible / inventory / all-in-one
/ multinode
/ group_vars / all.yml
/ roles / addmodule_role1 / …
/ addmodule_role2 / …
/ destroy.yml
/ kolla-host.yml
/ post-deploy.yml
/ site.yml
/ stop.yml
Configuration parameters of functionality are put to globals.yml and all.yml. Passwords are put to passwords.yml.
Inventory data are added to all-in-one and multinode files.
Roles variables, tasks, handlers, templates are added to ansible/roles.
Activation of roles are included to destroy.yml, kolla-host.yml, post-deploy.yml, stop.yml and/or site.yml.
Not all steps are compulsory.
Merging additional module project to kolla-ansible is quite simple with basic shell commands:
cat $ADD_MODULE/etc/kolla/globals.yml >> $KOLLA_ANSIBLE/etc/kolla/globals.yml
cat $ADD_MODULE/etc/kolla/passwords.yml >> $KOLLA_ANSIBLE/etc/kolla/passwords.yml
cat $ADD_MODULE/ansible/group_vars/all.yml >> $KOLLA_ANSIBLE/ansible/group_vars/all.yml
cat $ADD_MODULE/ansible/inventory/all-in-one >> $KOLLA_ANSIBLE/ansible/inventory/all-in-one
cat $ADD_MODULE/ansible/inventory/multinode >> $KOLLA_ANSIBLE/ansible/inventory/multinode
cat $ADD_MODULE/ansible/destroy.yml >> $KOLLA_ANSIBLE/ansible/destroy.yml
cat $ADD_MODULE/ansible/kolla-host.yml >> $KOLLA_ANSIBLE/ansible/kolla-host.yml
cat $ADD_MODULE/ansible/post-deploy.yml >> $KOLLA_ANSIBLE/ansible/post-deploy.yml
cat $ADD_MODULE/ansible/site.yml >> $KOLLA_ANSIBLE/ansible/site.yml
cat $ADD_MODULE/ansible/stop.yml >> $KOLLA_ANSIBLE/ansible/stop.yml
cp -r $ADD_MODULE/ansible/roles/* >> $KOLLA_ANSIBLE/ansible/roles
That way additional roles are executed together with other kolla-ansible roles on hosts which are specified in a common inventory. Tasks can use all available kolla-ansible variables, tools, ansible modules.
2. Proposal – building kolla-ansible container image
kolla-ansible can be run in a container. Image is built together with other kolla containers and is available on docker hub. That way it would be easier for somebody to try kolla.
It is also possible to build images, which have some interesting additional functionalities included.
3. Proposal – adding ceph as an additional functionality described in previous proposals
Ansible roles are developed for external ceph deployment. Cephadm, kolla-ceph or any other tool can be used in role’s plays. Has somebody have a suggestion, what to use?
A special kolla-ansible container image is built with included ceph roles. Merging is specified in Dockerfile.
I’ve already included three additional functionalities:
- docker_settings (docker_bip network is configurable)
- resource_reservation (resources – cpu cores and memory can be limited for openstack services)
- freeipa_client_install (freeipa client installation – done by my colleague, not finished yet)
They are now all included in the same project and can be viewed on:
https://gitlab.com/kemopq/addmodules-kolla-ansible/-/tree/master/ansible I’m building kolla-ansible container with those functioanlities included and running kolla-ansible playbook in container. I’m planing to do external Ceph deployment that way in next weeks.
I’m open to suggestions how this concept can be improved.