New stuffs again
This commit is contained in:
70
tasks/lock_pkg.yml
Normal file
70
tasks/lock_pkg.yml
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
# 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('^(\\w+.*?)-\\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: "Check existing versionlock: {{ item }}"
|
||||
when:
|
||||
- r_versionlock_check['rc'] == 0
|
||||
block:
|
||||
- name: Update package lock
|
||||
when:
|
||||
- item not in r_versionlock_check['stdout']
|
||||
block:
|
||||
- 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: versionlock_rm
|
||||
|
||||
- name: "Version locking: {{ 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."
|
||||
|
||||
|
||||
- name: "Add new versionlock: {{ item }}"
|
||||
when:
|
||||
- r_versionlock_check['rc'] == 1
|
||||
block:
|
||||
- name: "Version locking: {{ 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
|
||||
|
||||
- name: Debug r_versionlock_pkg
|
||||
ansible.builtin.debug:
|
||||
var: r_versionlock_pkg
|
||||
verbosity: 1
|
||||
rescue:
|
||||
- name: Failed to add versionlock
|
||||
ansible.builtin.fail:
|
||||
msg: "Failed to add versionlock for item: {{ item }}. Please re-check package name/version."
|
Reference in New Issue
Block a user