aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/roles/pacman/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/pacman/tasks/main.yml')
-rw-r--r--roles/pacman/tasks/main.yml28
1 files changed, 17 insertions, 11 deletions
diff --git a/roles/pacman/tasks/main.yml b/roles/pacman/tasks/main.yml
index e628873..ed9250d 100644
--- a/roles/pacman/tasks/main.yml
+++ b/roles/pacman/tasks/main.yml
@@ -1,4 +1,5 @@
-- become: true
+- name: Upgrade packages or fail gracefully
+ become: true
block:
- name: Upgrade packages
community.general.pacman:
@@ -7,31 +8,35 @@
register: pacman_result
notify: reboot
- - debug:
+ - name: Show upgraded packages
+ ansible.builtin.debug:
var: pacman_result.packages
when: pacman_result.changed
- name: Flush handlers
- meta: flush_handlers
+ ansible.builtin.meta: flush_handlers
rescue:
- - fail:
+ - name: Fail if /etc is not versioned
+ ansible.builtin.fail:
msg: Upgrading packages failed for an unknown reason!
when: not etc_versioned
- name: Check for changes in /etc
- command: git status --porcelain=v1
+ ansible.builtin.command: git status --porcelain=v1
args:
chdir: /etc
register: git_status
changed_when: false
failed_when: false
- - fail:
+ - name: Fail if there're no unstaged changes in /etc
+ ansible.builtin.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: |
+ ansible.builtin.shell: |
+ set -o pipefail && \
git status --porcelain=v1 \
| cut -c 4- \
| grep -G -v '^pacman.d/gnupg/'
@@ -42,20 +47,21 @@
failed_when: false
- name: Commit changes in /etc
- command: |
+ ansible.builtin.command: |
etckeeper commit 'pacman: GPG keys'
when: git_status.stdout and only_gnupg.rc != 0
- - name: Upgrade packages after GPG keys
+ - name: Retry upgrading packages
community.general.pacman:
update_cache: true
upgrade: true
register: pacman_result
notify: reboot
- - debug:
+ - name: Show upgraded packages
+ ansible.builtin.debug:
var: pacman_result.packages
when: pacman_result.changed
- name: Flush handlers
- meta: flush_handlers
+ ansible.builtin.meta: flush_handlers