50 lines
1.4 KiB
YAML
50 lines
1.4 KiB
YAML
- name: Check packages for updates
|
|
ansible.builtin.shell: set -o pipefail && yum list updates | awk 'f;/Updated Packages/{f=1;}' | awk '{ print $1 }'
|
|
changed_when: updates.stdout_lines | length > 0
|
|
args:
|
|
warn: false
|
|
register: updates
|
|
|
|
- name: Display count
|
|
ansible.builtin.debug:
|
|
msg: "Found {{ updates.stdout_lines | length }} packages to be updated:\n\n{{ updates.stdout }}"
|
|
- name: Update if needed
|
|
when: updates.stdout_lines | length > 0
|
|
block:
|
|
|
|
- name: Install updates using yum
|
|
ansible.builtin.yum:
|
|
name: "*"
|
|
state: present
|
|
update_only: true
|
|
|
|
- name: Install yum-utils
|
|
ansible.builtin.package:
|
|
name: yum-utils
|
|
|
|
- name: Check if reboot is required
|
|
ansible.builtin.command: needs-restarting -r
|
|
failed_when: false
|
|
register: reboot_required
|
|
changed_when: false
|
|
|
|
- name: Reboot if required
|
|
when: updates.stdout_lines | length > 0 and reboot_required.rc != 0
|
|
block:
|
|
|
|
- name: Reboot the server if required
|
|
ansible.builtin.shell: sleep 3; reboot
|
|
ignore_errors: "{{ ansible_check_mode }}"
|
|
changed_when: false
|
|
async: 1
|
|
poll: 0
|
|
|
|
- name: Wait for server to come back after reboot
|
|
ansible.builtin.wait_for_connection:
|
|
timeout: 600
|
|
delay: 20
|
|
register: reboot_result
|
|
- name: Reboot time
|
|
ansible.builtin.debug:
|
|
msg: "The system rebooted in {{ reboot_result.elapsed }} seconds."
|