50 lines
1.9 KiB
YAML
50 lines
1.9 KiB
YAML
---
|
|
# Conditions:
|
|
# - versionlock doesnt exist for pkg ***
|
|
# - add versionlock
|
|
# - versionlock exists for pkg and version matches ***
|
|
# - move on
|
|
# - versionlock exists for pkg and version mismatch ***
|
|
# - clear current lock
|
|
# - add new lock for new version
|
|
# - pkg doesnt exist ***
|
|
# - fail with message stating to check pkg name/version
|
|
#
|
|
# Package examples:
|
|
# - httpd-2.4.6-18.el7_0
|
|
# - httpd-tools-2.4.6-18.el7_0
|
|
###############################################################################
|
|
|
|
- name: Set package name fact
|
|
ansible.builtin.set_fact:
|
|
r_pkg_name: "{{ item | regex_replace('^(.*?)-\\d+.*?$', '\\1') }}"
|
|
|
|
- name: "Check if versionlock currently exists: {{ r_pkg_name }}"
|
|
ansible.builtin.command:
|
|
cmd: "grep '^0:{{ r_pkg_name }}-[[:digit:]]' /etc/yum/pluginconf.d/versionlock.list"
|
|
failed_when: r_versionlock_check['rc'] not in [0, 1]
|
|
changed_when: false
|
|
register: r_versionlock_check
|
|
|
|
- name: "Clear existing lock due to version mismatch: {{ item }}" # noqa: command-instead-of-module
|
|
ansible.builtin.command: "yum versionlock delete '{{ r_versionlock_check['stdout'] }}'"
|
|
register: r_versionlock_delete
|
|
when:
|
|
- r_versionlock_check['rc'] == 0
|
|
- item not in r_versionlock_check['stdout']
|
|
|
|
- name: "Add versionlock"
|
|
when:
|
|
- r_versionlock_check['rc'] == 1 or
|
|
r_versionlock_delete['changed'] | default(false) | bool
|
|
block:
|
|
- name: "Add versionlock: {{ item }}" # noqa: command-instead-of-module
|
|
ansible.builtin.command: "yum versionlock {{ item }}"
|
|
changed_when: "'versionlock added: 1' in r_versionlock_pkg['stdout']"
|
|
failed_when: "'versionlock added: 0' in r_versionlock_pkg['stdout']"
|
|
register: r_versionlock_pkg
|
|
rescue:
|
|
- name: Failed to add versionlock
|
|
ansible.builtin.fail:
|
|
msg: "Failed to add versionlock for item: {{ item }}. Please re-check package name/version."
|