From 4b858b6466ace736eb536fade00b567ca5227dca Mon Sep 17 00:00:00 2001
From: axelgobletbdr <40762710+axelgobletbdr@users.noreply.github.com>
Date: Fri, 23 Oct 2020 16:09:57 +0200
Subject: [PATCH] Fixes 6621 etcd backup directory is consuming much rootfs
 disk space (#6836)

* added an ansible var to manage retention of etcd backups

* refactord ls/grep into find in etcd backup removal command
---
 roles/etcd/defaults/main.yml   | 2 ++
 roles/etcd/handlers/backup.yml | 7 +++++++
 2 files changed, 9 insertions(+)

diff --git a/roles/etcd/defaults/main.yml b/roles/etcd/defaults/main.yml
index f4f4acff8..e23f0f6ef 100644
--- a/roles/etcd/defaults/main.yml
+++ b/roles/etcd/defaults/main.yml
@@ -9,6 +9,8 @@ etcd_events_cluster_enabled: false
 etcd_backup_prefix: "/var/backups"
 etcd_data_dir: "/var/lib/etcd"
 
+# Number of etcd backups to retain. Set to a value < 0 to retain all backups
+etcd_backup_retention_count: -1
 
 etcd_config_dir: /etc/ssl/etcd
 etcd_cert_dir: "{{ etcd_config_dir }}/ssl"
diff --git a/roles/etcd/handlers/backup.yml b/roles/etcd/handlers/backup.yml
index 966da538b..aeaa2b5fb 100644
--- a/roles/etcd/handlers/backup.yml
+++ b/roles/etcd/handlers/backup.yml
@@ -8,6 +8,7 @@
     - Stat etcd v2 data directory
     - Backup etcd v2 data
     - Backup etcd v3 data
+    - Remove old etcd backups
   when: etcd_cluster_is_healthy.rc == 0
 
 - name: Refresh Time Fact
@@ -57,3 +58,9 @@
   register: etcd_backup_v3_command
   until: etcd_backup_v3_command.rc == 0
   delay: "{{ retry_stagger | random + 3 }}"
+
+- name: Remove old etcd backups
+  shell:
+    chdir: "{{ etcd_backup_prefix }}"
+    cmd: "find . -name 'etcd-*' | head -n -{{ etcd_backup_retention_count }} | xargs rm -rf"
+  when: etcd_backup_retention_count >= 0
-- 
GitLab