diff --git a/tripleo_ansible/roles/tripleo_clients_install/tasks/install_pkgs.yml b/tripleo_ansible/roles/tripleo_clients_install/tasks/install_pkgs.yml deleted file mode 100644 index ec4ece51f..000000000 --- a/tripleo_ansible/roles/tripleo_clients_install/tasks/install_pkgs.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -# 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. - - -# "tripleo_clients_install" will search for and load any operating system variable file - -# found within the "vars/" path. If no OS files are found the task will skip. -- name: Gather variables for each operating system - include_vars: "{{ item }}" - with_first_found: - - skip: true - files: - - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" - - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - - "{{ ansible_distribution | lower }}.yml" - - "{{ ansible_os_family | lower }}-{{ ansible_distribution_version.split('.')[0] }}.yml" - - "{{ ansible_os_family | lower }}.yml" - tags: - - always - -- name: "Ensure {{ tripleo_clients_install_client }} package state is {{ tripleo_clients_install_pkg_state }}" - package: - name: "{{ tripleo_clients_install_python_prefix }}-{{ tripleo_clients_install_client }}client" - state: "{{ tripleo_clients_install_pkg_state }}" diff --git a/tripleo_ansible/roles/tripleo_clients_install/tasks/main.yml b/tripleo_ansible/roles/tripleo_clients_install/tasks/main.yml index 8c1570415..1288447cf 100644 --- a/tripleo_ansible/roles/tripleo_clients_install/tasks/main.yml +++ b/tripleo_ansible/roles/tripleo_clients_install/tasks/main.yml @@ -14,12 +14,46 @@ # License for the specific language governing permissions and limitations # under the License. -- name: Install all clients - include_tasks: install_pkgs.yml - vars: - tripleo_clients_install_client: "{{ pkg.key }}" - tripleo_clients_install_pkg_state: "{{ pkg.value }}" - loop: "{{ tripleo_clients_install_dict|dict2items }}" - loop_control: - loop_var: 'pkg' - label: "{{ pkg.key }}" +# found within the "vars/" path. If no OS files are found the task will skip. +- name: Gather variables for each operating system + include_vars: "{{ item }}" + with_first_found: + - skip: true + files: + - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" + - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml" + - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml" + - "{{ ansible_distribution | lower }}.yml" + - "{{ ansible_os_family | lower }}-{{ ansible_distribution_version.split('.')[0] }}.yml" + - "{{ ansible_os_family | lower }}.yml" + tags: + - always + +- name: Set packages facts + set_fact: + client_package_facts: |- + {% set package_sets = { + 'absent': [], + 'installed': [], + 'latest': [], + 'present': [], + 'removed': [] + } + %} + {% for k, v in tripleo_clients_install_dict.items() %} + {% set pkg_name = tripleo_clients_install_python_prefix ~ '-' ~ k ~ 'client' %} + {% if (tripleo_clients_install_pkg_state == 'present') and (v != tripleo_clients_install_pkg_state) %} + {% set _ = package_sets[v].append(pkg_name) %} + {% else %} + {% set _ = package_sets[tripleo_clients_install_pkg_state].append(pkg_name) %} + {% endif %} + {% endfor %} + {{ package_sets }} + +- name: "Run package install" + package: + name: "{{ item.value }}" + state: "{{ item.key }}" + when: + - (item.value | length) > 0 + loop: "{{ client_package_facts | dict2items }}"