ansible-role-openstack-oper.../tasks/backup_redis.yml
Dan Macpherson 229b138357 Redis backup, restore, and validation tasks
This adds task files for the backup, restore, and validation
for Redis. It also incorporates some of the foundational changes
from https://review.openstack.org/#/c/635506/

Change-Id: Idd50a6b53a22bc6b23df776cff9537e3c47618f3
2019-03-21 16:33:21 +00:00

76 lines
2.1 KiB
YAML

# Tasks for dumping a Redis backup from each host and pulling it to the
# Backup Server.
- name: Make sure Redis client is installed on the Target Hosts
yum:
name: redis
state: installed
- name: Remove any existing Redis backup directory
file:
path: "{{ backup_tmp_dir }}/redis"
state: absent
- name: Create a new Redis backup directory
file:
path: "{{ backup_tmp_dir }}/redis"
state: directory
- name: Get the Redis masterauth password
shell: |
/bin/hiera -c /etc/puppet/hiera.yaml redis::masterauth
when: redis_masterauth_password is undefined
register: redis_masterauth_password_cmd_output
become: true
no_log: true
- name: Convert the Redis masterauth password if unknown
set_fact:
redis_masterauth_password: "{{ redis_masterauth_password_cmd_output.stdout_lines[0] }}"
when: redis_masterauth_password is undefined
no_log: true
- name: Get the Redis VIP
shell: |
/bin/hiera -c /etc/puppet/hiera.yaml redis_vip
when: redis_vip is undefined
register: redis_vip_cmd_output
become: true
- name: Convert the Redis VIP if unknown
set_fact:
redis_vip: "{{ redis_vip_cmd_output.stdout_lines[0] }}"
when: redis_vip is undefined
- name: Run the redis backup command
command: /bin/redis-cli -h {{ redis_vip }} -a {{ redis_masterauth_password }} save
no_log: true
- name: Copy the Redis dump
copy:
src: /var/lib/redis/dump.rdb
dest: "{{ backup_tmp_dir }}/redis/dump.rdb"
remote_src: yes
become: true
# The archive module is pretty limited. Using a shell instead.
- name: Archive the OpenStack Redis dump
shell: |
/bin/tar --ignore-failed-read --xattrs \
-zcf {{ backup_tmp_dir }}/redis/openstack-backup-redis.tar \
{{ backup_tmp_dir }}/redis/dump.rdb
- name: Copy the archive to the backup server
synchronize:
mode: pull
src: "{{ backup_tmp_dir }}/redis/openstack-backup-redis.tar"
dest: "{{ backup_directory }}"
set_remote_user: false
ssh_args: "{{ backup_host_ssh_args }}"
delegate_to: "{{ backup_host }}"
- name: Remove the Redis backup directory
file:
path: "{{ backup_tmp_dir }}/redis"
state: absent