Skip to content

Commit

Permalink
etcd/backup: native ansible modules instead of shell (#10540)
Browse files Browse the repository at this point in the history
This make native ansible features (dry-run, changed state) easier to
have, and should have a minimal performance impact, since it only runs
on the etcd members.
  • Loading branch information
VannTen authored Oct 30, 2023
1 parent 5f9a7b9 commit 8f0e553
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions roles/etcd/handlers/backup_cleanup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,21 @@
- name: Cleanup etcd backups
command: /bin/true
notify:
- Find old etcd backups
- Remove old etcd backups

- name: Find old etcd backups
ansible.builtin.find:
file_type: directory
recurse: false
paths: "{{ etcd_backup_prefix }}"
patterns: "etcd-*"
register: _etcd_backups
when: etcd_backup_retention_count >= 0

- name: Remove old etcd backups
shell:
chdir: "{{ etcd_backup_prefix }}"
cmd: "set -o pipefail && find . -name 'etcd-*' -type d | sort -n | head -n -{{ etcd_backup_retention_count }} | xargs rm -rf"
executable: /bin/bash
ansible.builtin.file:
state: absent
path: "{{ item }}"
loop: "{{ (_etcd_backups.files | sort(attribute='ctime', reverse=True))[etcd_backup_retention_count:] | map(attribute='path') }}"
when: etcd_backup_retention_count >= 0

0 comments on commit 8f0e553

Please sign in to comment.