From a71e90584ae83ab7f3d7c063738be6d318f52f7e Mon Sep 17 00:00:00 2001 From: caoyuan Date: Thu, 18 Jan 2018 17:10:59 +0800 Subject: [PATCH] Provide support for solum dev mode in kolla Add a possibility to mount sources as volumes to containers, in "more than documentation" way. That will let us to use kolla as a replacement for devstack. Partially implements: blueprint mount-sources Change-Id: If241033d8c94c13f980fc3cc322f198187d64a21 --- ansible/roles/solum/defaults/main.yml | 12 ++++++++++++ ansible/roles/solum/handlers/main.yml | 8 ++++---- ansible/roles/solum/tasks/bootstrap_service.yml | 2 +- ansible/roles/solum/tasks/clone.yml | 6 ++++++ ansible/roles/solum/tasks/config.yml | 2 +- ansible/roles/solum/tasks/deploy.yml | 3 +++ 6 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 ansible/roles/solum/tasks/clone.yml diff --git a/ansible/roles/solum/defaults/main.yml b/ansible/roles/solum/defaults/main.yml index 434d03bfca..7c4546d262 100644 --- a/ansible/roles/solum/defaults/main.yml +++ b/ansible/roles/solum/defaults/main.yml @@ -11,6 +11,7 @@ solum_services: - "{{ node_config_directory }}/solum-api/:{{ container_config_directory }}/:ro" - "/etc/localtime:/etc/localtime:ro" - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/solum/solum:/var/lib/kolla/venv/lib/python2.7/site-packages/solum' if solum_dev_mode | bool else '' }}" solum-worker: container_name: solum_worker group: solum-worker @@ -20,6 +21,7 @@ solum_services: - "{{ node_config_directory }}/solum-worker/:{{ container_config_directory }}/:ro" - "/etc/localtime:/etc/localtime:ro" - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/solum/solum:/var/lib/kolla/venv/lib/python2.7/site-packages/solum' if solum_dev_mode | bool else '' }}" solum-deployer: container_name: solum_deployer group: solum-deployer @@ -29,6 +31,7 @@ solum_services: - "{{ node_config_directory }}/solum-deployer/:{{ container_config_directory }}/:ro" - "/etc/localtime:/etc/localtime:ro" - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/solum/solum:/var/lib/kolla/venv/lib/python2.7/site-packages/solum' if solum_dev_mode | bool else '' }}" solum-conductor: container_name: solum_conductor group: solum-conductor @@ -38,6 +41,7 @@ solum_services: - "{{ node_config_directory }}/solum-conductor/:{{ container_config_directory }}/:ro" - "/etc/localtime:/etc/localtime:ro" - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/solum/solum:/var/lib/kolla/venv/lib/python2.7/site-packages/solum' if solum_dev_mode | bool else '' }}" #################### @@ -87,3 +91,11 @@ solum_logging_debug: "{{ openstack_logging_debug }}" solum_keystone_user: "solum" openstack_solum_auth: "{{ openstack_auth }}" + + +#################### +# Kolla +#################### +solum_git_repository: "{{ kolla_dev_repos_git }}/{{ project_name }}" +solum_dev_repos_pull: "{{ kolla_dev_repos_pull }}" +solum_dev_mode: "{{ kolla_dev_mode }}" diff --git a/ansible/roles/solum/handlers/main.yml b/ansible/roles/solum/handlers/main.yml index ae4f6f4f40..0e122dea76 100644 --- a/ansible/roles/solum/handlers/main.yml +++ b/ansible/roles/solum/handlers/main.yml @@ -12,7 +12,7 @@ common_options: "{{ docker_common_options }}" name: "{{ service.container_name }}" image: "{{ service.image }}" - volumes: "{{ service.volumes }}" + volumes: "{{ service.volumes|reject('equalto', '')|list }}" when: - kolla_action != "config" - inventory_hostname in groups[service.group] @@ -34,7 +34,7 @@ common_options: "{{ docker_common_options }}" name: "{{ service.container_name }}" image: "{{ service.image }}" - volumes: "{{ service.volumes }}" + volumes: "{{ service.volumes|reject('equalto', '')|list }}" when: - kolla_action != "config" - inventory_hostname in groups[service.group] @@ -56,7 +56,7 @@ common_options: "{{ docker_common_options }}" name: "{{ service.container_name }}" image: "{{ service.image }}" - volumes: "{{ service.volumes }}" + volumes: "{{ service.volumes|reject('equalto', '')|list }}" when: - kolla_action != "config" - inventory_hostname in groups[service.group] @@ -78,7 +78,7 @@ common_options: "{{ docker_common_options }}" name: "{{ service.container_name }}" image: "{{ service.image }}" - volumes: "{{ service.volumes }}" + volumes: "{{ service.volumes|reject('equalto', '')|list }}" when: - kolla_action != "config" - inventory_hostname in groups[service.group] diff --git a/ansible/roles/solum/tasks/bootstrap_service.yml b/ansible/roles/solum/tasks/bootstrap_service.yml index 0d20835719..fc63c094b5 100644 --- a/ansible/roles/solum/tasks/bootstrap_service.yml +++ b/ansible/roles/solum/tasks/bootstrap_service.yml @@ -15,6 +15,6 @@ BOOTSTRAP: name: "bootstrap_solum" restart_policy: "never" - volumes: "{{ solum_api.volumes }}" + volumes: "{{ solum_api.volumes|reject('equalto', '')|list }}" run_once: True delegate_to: "{{ groups[solum_api.group][0] }}" diff --git a/ansible/roles/solum/tasks/clone.yml b/ansible/roles/solum/tasks/clone.yml new file mode 100644 index 0000000000..6058344995 --- /dev/null +++ b/ansible/roles/solum/tasks/clone.yml @@ -0,0 +1,6 @@ +--- +- name: Cloning solum source repository for development + git: + repo: "{{ solum_git_repository }}" + dest: "{{ kolla_dev_repos_directory }}/{{ project_name }}" + update: "{{ solum_dev_repos_pull }}" diff --git a/ansible/roles/solum/tasks/config.yml b/ansible/roles/solum/tasks/config.yml index 346fef1b88..c286fc1ad3 100644 --- a/ansible/roles/solum/tasks/config.yml +++ b/ansible/roles/solum/tasks/config.yml @@ -60,7 +60,7 @@ common_options: "{{ docker_common_options }}" name: "{{ item.value.container_name }}" image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes }}" + volumes: "{{ item.value.volumes|reject('equalto', '')|list }}" register: check_solum_containers when: - kolla_action != "config" diff --git a/ansible/roles/solum/tasks/deploy.yml b/ansible/roles/solum/tasks/deploy.yml index 4048651988..922adfaa0d 100644 --- a/ansible/roles/solum/tasks/deploy.yml +++ b/ansible/roles/solum/tasks/deploy.yml @@ -8,6 +8,9 @@ inventory_hostname in groups['solum-worker'] or inventory_hostname in groups['solum-conductor'] +- include: clone.yml + when: solum_dev_mode | bool + - include: bootstrap.yml when: inventory_hostname in groups['solum-api']