From 0b84598e2135367f881444f9fb374d9eabdacc06 Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sat, 6 Feb 2021 09:23:22 +0200 Subject: [PATCH] Update playbook improvements. - Run on the different hosts in parallel, not waiting for other hosts to finish. - Handle an error when reboot_needed is not defined if a reboot is not needed. - Fix a typo. --- update.yaml | 222 +++++++++++++++++++++++++--------------------------- 1 file changed, 108 insertions(+), 114 deletions(-) diff --git a/update.yaml b/update.yaml index ec8b786..e8e678b 100644 --- a/update.yaml +++ b/update.yaml @@ -1,127 +1,121 @@ --- -- name: Group hosts by package manager +- name: Update hosts + strategy: host_pinned hosts: - all:!localhost - tasks: - - name: Group hosts by package manager - group_by: - key: pkg_mgr_{{ ansible_pkg_mgr }} - changed_when: false - tags: - - always - -- name: Update Debian hosts - hosts: - - pkg_mgr_apt - tasks: - - name: Update packages - apt: - autoclean: true - purge: true - update_cache: true - upgrade: dist - register: apt_upgrade - - - name: Remove no-longer needed dependecies - apt: - autoremove: true - purge: true - - - name: Update firmware - command: fwupdmgr --assume-yes update - register: fwupdmgr - changed_when: fwupdmgr.stdout_lines|length > 0 - - - name: Update Flatpaks appstream - command: - cmd: flatpak update --appstream - ignore_errors: true - changed_when: false - - - name: Update Flatpaks - command: - cmd: flatpak update --assumeyes - register: flatpak_update - ignore_errors: true - changed_when: |- - "Nothing to do" not in flatpak_update.stdout - - - name: Remove unused Flatpaks - command: - cmd: flatpak uninstall --unused --assumeyes - register: flatpak_unused - ignore_errors: true - changed_when: |- - "Nothing" not in flatpak_unused.stdout - - - name: Set reboot needed fact - set_fact: - reboot_needed: >- - {{ apt_upgrade is changed or - fwupdmgr is changed or - flatpak_update is changed }} tags: - - debian - update - -- name: Update OpenWRT hosts - hosts: - - pkg_mgr_opkg tasks: - - name: Update package list - command: opkg update - changed_when: false - - - name: Update packages - # We run through sort so that we don't run 2 instances fo opkg at once. - shell: |- - opkg list-upgradable | awk '{print $1}' | sort | xargs -rn1 opkg upgrade - register: opkg_upgrade - changed_when: opkg_upgrade.stdout_lines|length > 0 - - - name: Set reboot needed fact - set_fact: - reboot_needed: "{{ opkg_upgrade is changed }}" - tags: - - openwrt - - update - -- name: Update OpenBSD hosts - hosts: - - pkg_mgr_openbsd_pkg - tasks: - - name: Apply system patches - command: syspatch - register: syspatch - changed_when: syspatch.stdout_lines|length > 0 - - - name: Update packages - openbsd_pkg: - name: "*" - state: latest - register: pkg_upgrade - - - name: Update firmware - command: fw_update -a - register: fw_update - changed_when: fw_update.stdout_lines|length > 0 - - - name: Set reboot needed fact - set_fact: - reboot_needed: >- - {{ syspatch is changed or - pkg_upgrade is changed or - fw_update is changed }} - tags: - - openbsd - - update + - name: Update Debian-based hosts + when: ansible_pkg_mgr == 'apt' + tags: + - debian + block: + - name: Update packages + apt: + autoclean: true + purge: true + update_cache: true + upgrade: dist + register: apt_upgrade + + - name: Remove no-longer needed dependecies + apt: + autoremove: true + purge: true + + - name: Update firmware + command: fwupdmgr --assume-yes update + register: fwupdmgr + changed_when: fwupdmgr.stdout_lines|length > 0 + + - name: Update Flatpaks appstream + command: + cmd: flatpak update --appstream + ignore_errors: true + changed_when: false + + - name: Update Flatpaks + command: + cmd: flatpak update --assumeyes + register: flatpak_update + ignore_errors: true + changed_when: |- + "Nothing to do" not in flatpak_update.stdout + + - name: Remove unused Flatpaks + command: + cmd: flatpak uninstall --unused --assumeyes + register: flatpak_unused + ignore_errors: true + changed_when: |- + "Nothing" not in flatpak_unused.stdout + + - name: Set reboot needed fact + set_fact: + reboot_needed: >- + {{ apt_upgrade is changed or + fwupdmgr is changed or + flatpak_update is changed }} + + - name: Update OpenWRT hosts + when: ansible_pkg_mgr == 'opkg' + tags: + - openwrt + block: + - name: Update package list + command: opkg update + changed_when: false + + - name: Update packages + # We run through sort so that we don't run 2 instances of opkg at + # once. + shell: >- + opkg list-upgradable | + awk '{print $1}' | + sort | + xargs -rn1 opkg upgrade + register: opkg_upgrade + changed_when: opkg_upgrade.stdout_lines|length > 0 + + - name: Set reboot needed fact + set_fact: + reboot_needed: "{{ opkg_upgrade is changed }}" + + - name: Update OpenWRT hosts + when: ansible_pkg_mgr == 'openbsd_pkg' + tags: + - openbsd + block: + - name: Apply system patches + command: syspatch + register: syspatch + changed_when: syspatch.stdout_lines|length > 0 + + - name: Update packages + openbsd_pkg: + name: "*" + state: latest + register: pkg_upgrade + + - name: Update firmware + command: fw_update -a + register: fw_update + changed_when: fw_update.stdout_lines|length > 0 + + - name: Set reboot needed fact + set_fact: + reboot_needed: >- + {{ syspatch is changed or + pkg_upgrade is changed or + fw_update is changed }} - name: Reboot NS1 hosts: - ns1 tasks: - name: Reboot - when: reboot_needed + when: reboot_needed|default(false) reboot: tags: - reboot @@ -131,7 +125,7 @@ - ea6350 tasks: - name: Reboot - when: reboot_needed + when: reboot_needed|default(false) command: reboot - name: Wait to re-establish the connection @@ -147,7 +141,7 @@ wait_for_connection: - name: Reboot - when: reboot_needed + when: reboot_needed|default(false) reboot: tags: - reboot -- GitLab