--- # 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."