From 448c591086b5461e412a93ed9e8552792a964b9b Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Fri, 20 Sep 2019 17:23:11 -0500 Subject: [PATCH] Add conditions to ceph roles for dependencies This change adds several conditions to the ceph roles so that when they're included as a dependency they're only run when required. This will ensure we're optimizing the runtime while also making the log output a little quieter. Change-Id: If5a2a60ce6769164f16e92bf1d4220216507f45e Signed-off-by: Kevin Carter --- .../roles/tripleo-ceph-common/tasks/main.yml | 20 +++++++++++-------- .../roles/tripleo-ceph-common/vars/main.yml | 17 ++++++++++++++++ .../tripleo-ceph-fetch-dir/meta/main.yml | 8 ++++++-- .../tripleo-ceph-fetch-dir/tasks/create.yml | 4 ++++ .../tripleo-ceph-run-ansible/meta/main.yml | 16 +++++++++++---- .../roles/tripleo-ceph-uuid/meta/main.yml | 8 ++++++-- .../roles/tripleo-ceph-uuid/tasks/main.yml | 4 ++++ .../roles/tripleo-ceph-work-dir/meta/main.yml | 4 +++- .../tasks/get_ssh_private_key.yml | 3 ++- .../tripleo-ceph-work-dir/tasks/main.yml | 2 ++ .../tripleo-ceph-work-dir/tasks/prepare.yml | 5 +++-- 11 files changed, 71 insertions(+), 20 deletions(-) create mode 100644 tripleo_ansible/roles/tripleo-ceph-common/vars/main.yml diff --git a/tripleo_ansible/roles/tripleo-ceph-common/tasks/main.yml b/tripleo_ansible/roles/tripleo-ceph-common/tasks/main.yml index c5a54d2e7..d1554cab2 100644 --- a/tripleo_ansible/roles/tripleo-ceph-common/tasks/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-common/tasks/main.yml @@ -14,9 +14,6 @@ # License for the specific language governing permissions and limitations # under the License. - -# "tripleo-ceph-common" will search for and load any operating system variable file - - name: set basic user fact set_fact: ansible_user: "{{ lookup('env', 'USER') }}" @@ -29,17 +26,20 @@ when: - ansible_user_dir is undefined -- name: set default for calling_ansible_environment_variables - set_fact: - calling_ansible_environment_variables: [] - -- when: ceph_ansible_inherits_calling_ansible_environment +- name: Local environment inherit + when: + - (ceph_ansible_inherits_calling_ansible_environment | default(false)) | bool block: - name: get all ansible environment variables shell: "env | grep ANSIBLE_" register: env_shell_output ignore_errors: true + delegate_to: localhost + connection: local + run_once: true + - name: set calling_ansible_environment_variables + run_once: true set_fact: calling_ansible_environment_variables: "{{ env_shell_output.stdout_lines }}" when: @@ -47,3 +47,7 @@ - env_shell_output.rc == 0 - env_shell_output.stdout_lines is defined - (env_shell_output.stdout_lines|length) > 0 + +- name: Set common fact + set_fact: + ceph_common_done: true diff --git a/tripleo_ansible/roles/tripleo-ceph-common/vars/main.yml b/tripleo_ansible/roles/tripleo-ceph-common/vars/main.yml new file mode 100644 index 000000000..b279b747b --- /dev/null +++ b/tripleo_ansible/roles/tripleo-ceph-common/vars/main.yml @@ -0,0 +1,17 @@ +--- +# Copyright 2019 Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +calling_ansible_environment_variables: [] diff --git a/tripleo_ansible/roles/tripleo-ceph-fetch-dir/meta/main.yml b/tripleo_ansible/roles/tripleo-ceph-fetch-dir/meta/main.yml index e82e8d8c2..b9c85870f 100644 --- a/tripleo_ansible/roles/tripleo-ceph-fetch-dir/meta/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-fetch-dir/meta/main.yml @@ -39,5 +39,9 @@ galaxy_info: - tripleo dependencies: - - tripleo-ceph-common - - tripleo-ceph-work-dir + - role: tripleo-ceph-common + when: + - ceph_common_done is undefined + - role: tripleo-ceph-work-dir + when: + - ceph_ansible_private_key_file is undefined diff --git a/tripleo_ansible/roles/tripleo-ceph-fetch-dir/tasks/create.yml b/tripleo_ansible/roles/tripleo-ceph-fetch-dir/tasks/create.yml index 4766bb3b5..666eec02a 100644 --- a/tripleo_ansible/roles/tripleo-ceph-fetch-dir/tasks/create.yml +++ b/tripleo_ansible/roles/tripleo-ceph-fetch-dir/tasks/create.yml @@ -87,3 +87,7 @@ when: - curl_get_http_status is changed - curl_get_http_status.stdout == "200" + +- name: Set cleaned fact + set_fact: + ceph_node_cleaned: true diff --git a/tripleo_ansible/roles/tripleo-ceph-run-ansible/meta/main.yml b/tripleo_ansible/roles/tripleo-ceph-run-ansible/meta/main.yml index 9957bcdd6..d9de105a3 100644 --- a/tripleo_ansible/roles/tripleo-ceph-run-ansible/meta/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-run-ansible/meta/main.yml @@ -39,7 +39,15 @@ galaxy_info: - tripleo dependencies: - - tripleo-ceph-common - - tripleo-ceph-work-dir - - tripleo-ceph-fetch-dir - - tripleo-ceph-uuid + - role: tripleo-ceph-common + when: + - ceph_common_done is undefined + - role: tripleo-ceph-work-dir + when: + - ceph_ansible_private_key_file is undefined + - role: tripleo-ceph-fetch-dir + when: + - ceph_node_cleaned is undefined + - role: tripleo-ceph-uuid + when: + - (nodes_uuid_list is undefined) or (nodes_data is undefined) diff --git a/tripleo_ansible/roles/tripleo-ceph-uuid/meta/main.yml b/tripleo_ansible/roles/tripleo-ceph-uuid/meta/main.yml index 71ed278d4..a88a2c279 100644 --- a/tripleo_ansible/roles/tripleo-ceph-uuid/meta/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-uuid/meta/main.yml @@ -39,5 +39,9 @@ galaxy_info: - tripleo dependencies: - - tripleo-ceph-common - - tripleo-ceph-work-dir + - role: tripleo-ceph-common + when: + - ceph_common_done is undefined + - role: tripleo-ceph-work-dir + when: + - ceph_ansible_private_key_file is undefined diff --git a/tripleo_ansible/roles/tripleo-ceph-uuid/tasks/main.yml b/tripleo_ansible/roles/tripleo-ceph-uuid/tasks/main.yml index 6b6d36248..eae7e037d 100644 --- a/tripleo_ansible/roles/tripleo-ceph-uuid/tasks/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-uuid/tasks/main.yml @@ -15,4 +15,8 @@ # under the License. - import_tasks: prepare.yml + when: + - nodes_data is undefined - import_tasks: gather.yml + when: + - nodes_uuid_list is undefined diff --git a/tripleo_ansible/roles/tripleo-ceph-work-dir/meta/main.yml b/tripleo_ansible/roles/tripleo-ceph-work-dir/meta/main.yml index 7c4ead768..3c7ee3db3 100644 --- a/tripleo_ansible/roles/tripleo-ceph-work-dir/meta/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-work-dir/meta/main.yml @@ -39,4 +39,6 @@ galaxy_info: - tripleo dependencies: - - tripleo-ceph-common + - role: tripleo-ceph-common + when: + - ceph_common_done is undefined diff --git a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/get_ssh_private_key.yml b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/get_ssh_private_key.yml index 294369ce6..3e085ab39 100644 --- a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/get_ssh_private_key.yml +++ b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/get_ssh_private_key.yml @@ -22,4 +22,5 @@ - name: set private key file set_fact: ceph_ansible_private_key_file: "{{ playbook_dir }}/ssh_private_key" - when: ceph_ansible_private_key_file is not defined and detect_private_key_file.stat.exists + when: + - detect_private_key_file.stat.exists | bool diff --git a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/main.yml b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/main.yml index 10bcea494..67c1cf595 100644 --- a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/main.yml +++ b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/main.yml @@ -16,3 +16,5 @@ - import_tasks: prepare.yml - import_tasks: get_ssh_private_key.yml + when: + - ceph_ansible_private_key_file is undefined diff --git a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml index fb809823f..ae24dc82b 100644 --- a/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml +++ b/tripleo_ansible/roles/tripleo-ceph-work-dir/tasks/prepare.yml @@ -34,6 +34,7 @@ src: "{{ inventory_file }}" dest: "{{ playbook_dir }}/ceph-ansible/inventory.yml" state: link + force: true tags: - run_uuid_ansible - run_ceph_ansible @@ -41,9 +42,9 @@ - name: generate ceph-ansible group vars all copy: dest: "{{ playbook_dir }}/ceph-ansible/group_vars/all.yml" - content: "{{ ceph_ansible_group_vars_all|to_nice_yaml }}" + content: "{{ ceph_ansible_group_vars_all | to_nice_yaml }}" - name: generate ceph-ansible extra vars copy: dest: "{{ playbook_dir }}/ceph-ansible/extra_vars.yml" - content: "{{ ceph_ansible_extra_vars|to_nice_yaml }}" + content: "{{ ceph_ansible_extra_vars | to_nice_yaml }}"