- name: Check if pacman is installed command: pacman --version register: pacman_version changed_when: no failed_when: no - when: pacman_version.rc == 0 become: yes block: - name: Upgrade packages community.general.pacman: update_cache: yes upgrade: yes register: pacman_result notify: reboot - debug: var: pacman_result.packages when: pacman_result.changed - name: Flush handlers meta: flush_handlers rescue: - fail: msg: Upgrading packages failed for an unknown reason! when: not etc_versioned - name: Check for changes in /etc command: git status --porcelain=v1 args: chdir: /etc register: git_status changed_when: no failed_when: no - fail: msg: Upgrading packages failed for an unknown reason! when: not git_status.stdout - name: All changes in /etc are in pacman.d/gnupg? shell: git status --porcelain=v1 | cut -c 4- | grep -G -v '^pacman.d/gnupg/' args: chdir: /etc register: only_gnupg changed_when: no failed_when: no - name: Commit changes in /etc command: | etckeeper commit 'pacman: GPG keys' when: git_status.stdout and only_gnupg.rc != 0 - name: Upgrade packages after GPG keys community.general.pacman: update_cache: yes upgrade: yes register: pacman_result notify: reboot - debug: var: pacman_result.packages when: pacman_result.changed - name: Flush handlers meta: flush_handlers