Browse Source

Backup etcd data before restarting etcd

etcd is crucial part of kubernetes cluster. Ansible restarts etcd on
reconfiguration. Backup helps operator to restore cluster manually in
case of any issues.

Signed-off-by: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
pull/1159/head
Sergii Golovatiuk 7 years ago
parent
commit
c04a6254b9
2 changed files with 48 additions and 0 deletions
  1. 45
      roles/etcd/handlers/backup.yml
  2. 3
      roles/etcd/handlers/main.yml

45
roles/etcd/handlers/backup.yml

@ -0,0 +1,45 @@
---
- name: Backup etcd data
command: /bin/true
notify:
- Refresh Time Fact
- Set etcd Backup Directory Prefix
- Set Backup Directory
- Create Backup Directory
- Backup etcd v2 data
- Backup etcd v3 data
when: etcd_cluster_is_healthy.rc == 0
- name: Refresh Time Fact
setup: filter=ansible_date_time
- name: Set etcd Backup Directory Prefix
set_fact:
etcd_backup_prefix: '/var/backups'
- name: Set Backup Directory
set_fact:
etcd_backup_directory: "{{ etcd_backup_prefix }}/etcd-{{ ansible_date_time.date }}_{{ ansible_date_time.time }}"
- name: Create Backup Directory
file:
path: "{{ etcd_backup_directory }}"
state: directory
owner: root
group: root
mode: 0600
- name: Backup etcd v2 data
command: "{{ bin_dir }}/etcdctl backup --data-dir {{ etcd_data_dir }} --backup-dir {{ etcd_backup_directory }}"
environment:
ETCDCTL_API: 2
retries: 3
delay: "{{ retry_stagger | random + 3 }}"
- name: Backup etcd v3 data
command: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} snapshot save {{ etcd_backup_directory }}/snapshot.db"
environment:
ETCDCTL_API: 3
retries: 3
delay: "{{ retry_stagger | random + 3 }}"

3
roles/etcd/handlers/main.yml

@ -2,10 +2,13 @@
- name: restart etcd
command: /bin/true
notify:
- Backup etcd data
- etcd | reload systemd
- reload etcd
- wait for etcd up
- include: backup.yml
- name: etcd | reload systemd
command: systemctl daemon-reload

Loading…
Cancel
Save