New stuffs again

This commit is contained in:
2025-07-08 10:50:08 -04:00
parent 7502dbbd84
commit 49b98451a3
16 changed files with 548 additions and 31 deletions

98
tasks/lock_pkg copy.yml Normal file
View File

@ -0,0 +1,98 @@
---
# httpd-2.4.6-18.el7_0
# item | regex_replace('(\\w+-\\d+)\\..*$', '\\1')
- name: Debug item
ansible.builtin.debug:
var: item
# - name: Regex test 1
# ansible.builtin.debug:
# msg: "{{ item | regex_replace('(\\w+.?)-(\\d+\\..*)(\\.el.*$)', '\\1 + \\2 + \\3') }}"
# - name: Regex test 2
# ansible.builtin.debug:
# msg: "{{ item | regex_replace('^.*?-(\\d+.*$)', '\\1') }}"
# - name: Regex test 3
# ansible.builtin.debug:
# msg: "{{ item | regex_replace('^(\\w+.*?)-\\d+.*?$', '\\1') }}"
# - name: Regex test
# ansible.builtin.debug:
# msg: "{{ item | regex_replace('(\\w+.?)-(\\d+\\..*$)', '\\1 + \\2') }}"
# - name: Set package name and version facts
# ansible.builtin.set_fact:
# pkg_name: "{{ item | regex_replace('(\\w+.?)-\\d+\\..*$', '\\1') }}"
# pkg_vers: "{{ item | regex_replace('\\w+.?-(\\d+\\..*$)', '\\1') }}"
- name: Set package name and version facts
ansible.builtin.set_fact:
pkg_name: "{{ item | regex_replace('^(\\w+.*?)-\\d+.*?$', '\\1') }}"
pkg_vers: "{{ item | regex_replace('^.*?-(\\d+.*$)', '\\1') }}"
- name: Display package name and version
ansible.builtin.debug:
msg: "Package: {{ pkg_name }} || Version: {{ pkg_vers }}"
# this is the right track...
# 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
# - name: End host
# ansible.builtin.meta: end_host
# - name: "Check if lock currently exists for {{ item }}"
# ansible.builtin.command:
# cmd: "grep -c {{ item | regex_replace('(\\w+-\\d+)\\..*$', '\\1') }} /etc/yum/pluginconf.d/versionlock.list"
# failed_when: versionlock_check['rc'] not in [0, 1]
# changed_when: false
# register: versionlock_check
# - name: Debug versionlock_check
# ansible.builtin.debug:
# var: versionlock_check
# # verbosity: 1
# - name: "Clear old version lock if present for {{ item }}"
# when:
# - versionlock_check['rc'] == 0
# block:
# - name: "Clear existing locks via wildcard match for {{ item }}" # noqa: command-instead-of-module
# ansible.builtin.command: "yum versionlock delete '{{ item | regex_replace('(\\w+-\\d+)\\..*$', '\\1') }}*'"
# register: versionlock_rm
# - name: Debug versionlock_rm
# ansible.builtin.debug:
# var: versionlock_rm
# - name: "Version lock package: {{ item }}"
# # when:
# # - versionlock_check['rc'] == 1
# block:
# - name: "Version locking: {{ item }}" # noqa: command-instead-of-module
# ansible.builtin.command: "yum versionlock {{ item }}"
# # changed_when: "'Adding versionlock on:' in versionlock_pkg['stdout']"
# # failed_when: "'Package already locked' in versionlock_pkg['stdout']"
# changed_when: "'versionlock added: 1' in versionlock_pkg['stdout']"
# failed_when: "'versionlock added: 0' in versionlock_pkg['stdout']"
# register: versionlock_pkg
# - name: Debug versionlock_pkg
# ansible.builtin.debug:
# var: 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."

70
tasks/lock_pkg.yml Normal file
View 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."