From fc8831a5de0594226eaba494a6e5c9123d76e7d2 Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Fri, 21 May 2021 00:29:17 -0400 Subject: [PATCH 1/6] Detect package manager (yum/dnf) and versionlock plugin package name --- vars/RedHat.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vars/RedHat.yml b/vars/RedHat.yml index 5887416b..a4935087 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -2,3 +2,5 @@ java: "{{ es_java | default('java-1.8.0-openjdk.x86_64') }}" default_file: "/etc/sysconfig/elasticsearch" es_home: "/usr/share/elasticsearch" +package_manager: "{% if ansible_os_family == 'RedHat' and ansible_distribution_major_version >= '8' %}dnf{% else %}yum{% endif %}" +versionlock_plugin_package: "{% if ansible_os_family == 'RedHat' and ansible_distribution_major_version >= '8' %}python3-dnf-plugin-versionlock{% else %}yum-plugin-versionlock{% endif %}" \ No newline at end of file From 60eb4ccf1ac6318816e9e1c23486343dd70eb51f Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Fri, 21 May 2021 00:29:53 -0400 Subject: [PATCH 2/6] Invoke detected package manager and versionlock plugin package name --- tasks/elasticsearch-RedHat-version-lock.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasks/elasticsearch-RedHat-version-lock.yml b/tasks/elasticsearch-RedHat-version-lock.yml index 7835be42..dbae291a 100644 --- a/tasks/elasticsearch-RedHat-version-lock.yml +++ b/tasks/elasticsearch-RedHat-version-lock.yml @@ -2,13 +2,13 @@ - name: RedHat - install yum-version-lock become: yes yum: - name: yum-plugin-versionlock + name: "{{ versionlock_plugin_package }}" state: present update_cache: yes - name: RedHat - check if requested elasticsearch version lock exists become: yes - shell: 'yum versionlock list | grep {{es_package_name}} | grep -c "{{es_version}}"' + shell: '{{ package_manager }} versionlock list | grep {{ es_package_name }} | grep -c "{{ es_version }}"' register: es_requested_version_locked args: warn: false @@ -18,7 +18,7 @@ - name: RedHat - lock elasticsearch version become: yes - shell: yum versionlock delete 0:elasticsearch* ; yum versionlock add {{ es_package_name }}-{{ es_version }} + command: '"{{ package_manager }}" versionlock delete 0:elasticsearch* ; "{{ package_manager }}" versionlock add {{ es_package_name }}-{{ es_version }}' args: warn: false when: @@ -28,7 +28,7 @@ - name: RedHat - check if any elasticsearch version lock exists become: yes - shell: yum versionlock list | grep -c elasticsearch + shell: '"{{ package_manager }}" versionlock list | grep -c elasticsearch' register: es_version_locked args: warn: false @@ -38,7 +38,7 @@ - name: RedHat - unlock elasticsearch version become: yes - shell: yum versionlock delete 0:elasticsearch* + shell: '"{{ package_manager }}" versionlock delete 0:elasticsearch*' args: warn: false when: From 188a00a28dacb8637ea125f696a05bdd81ef8add Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Tue, 25 Jan 2022 15:05:10 -0500 Subject: [PATCH 3/6] Add clarity to task name and use the package module --- tasks/elasticsearch-RedHat-version-lock.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/elasticsearch-RedHat-version-lock.yml b/tasks/elasticsearch-RedHat-version-lock.yml index dbae291a..a121a09b 100644 --- a/tasks/elasticsearch-RedHat-version-lock.yml +++ b/tasks/elasticsearch-RedHat-version-lock.yml @@ -1,7 +1,7 @@ --- -- name: RedHat - install yum-version-lock +- name: RedHat - install {{ versionlock_plugin_package }} become: yes - yum: + package: name: "{{ versionlock_plugin_package }}" state: present update_cache: yes From 32af3d43becbe92fcd689bc6fe03fdd1972d591c Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Tue, 25 Jan 2022 15:05:30 -0500 Subject: [PATCH 4/6] Remove unnecessary distro check and improve readability --- vars/RedHat.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/vars/RedHat.yml b/vars/RedHat.yml index a4935087..3ab3a67a 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -2,5 +2,14 @@ java: "{{ es_java | default('java-1.8.0-openjdk.x86_64') }}" default_file: "/etc/sysconfig/elasticsearch" es_home: "/usr/share/elasticsearch" -package_manager: "{% if ansible_os_family == 'RedHat' and ansible_distribution_major_version >= '8' %}dnf{% else %}yum{% endif %}" -versionlock_plugin_package: "{% if ansible_os_family == 'RedHat' and ansible_distribution_major_version >= '8' %}python3-dnf-plugin-versionlock{% else %}yum-plugin-versionlock{% endif %}" \ No newline at end of file + +package_manager: "{% if ansible_distribution_version is version('8', '>=') %} + dnf + {% else %} + yum + {% endif %}" +versionlock_plugin_package: "{% if ansible_distribution_version is version('8', '>=') %} + python3-dnf-plugin-versionlock + {% else %} + yum-plugin-versionlock + {% endif %}" \ No newline at end of file From 6bb849533f707ee5493264e32af3d159f50f64a5 Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Tue, 25 Jan 2022 15:16:26 -0500 Subject: [PATCH 5/6] Derive the package manager from ansible_facts --- vars/RedHat.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/vars/RedHat.yml b/vars/RedHat.yml index 3ab3a67a..d7b88f63 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -3,11 +3,7 @@ java: "{{ es_java | default('java-1.8.0-openjdk.x86_64') }}" default_file: "/etc/sysconfig/elasticsearch" es_home: "/usr/share/elasticsearch" -package_manager: "{% if ansible_distribution_version is version('8', '>=') %} - dnf - {% else %} - yum - {% endif %}" +package_manager: "{{ ansible_facts.pkg_mgr }}" versionlock_plugin_package: "{% if ansible_distribution_version is version('8', '>=') %} python3-dnf-plugin-versionlock {% else %} From 99a129a9eb12731c8121754f297e309c5b4bfedb Mon Sep 17 00:00:00 2001 From: Brad Laue Date: Tue, 25 Jan 2022 15:17:57 -0500 Subject: [PATCH 6/6] Add comment to the vars file for clarity of purpose --- vars/RedHat.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/vars/RedHat.yml b/vars/RedHat.yml index d7b88f63..d3b4a606 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -3,6 +3,7 @@ java: "{{ es_java | default('java-1.8.0-openjdk.x86_64') }}" default_file: "/etc/sysconfig/elasticsearch" es_home: "/usr/share/elasticsearch" +# We need to detect the package manager to use here - yum for CentOS 7, dnf for CentOS >= 8. package_manager: "{{ ansible_facts.pkg_mgr }}" versionlock_plugin_package: "{% if ansible_distribution_version is version('8', '>=') %} python3-dnf-plugin-versionlock