mirror of https://github.com/ceph/ceph-ansible.git
backup-and-restore: various fixes
- preserve mode and ownership on main directories
- make sure the directories are well present prior to restoring files.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2051640
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit 047af3a3f6
)
pull/7307/head
parent
1ecdc189b1
commit
1b09682f75
|
@ -71,7 +71,7 @@
|
|||
loop: "{{ file_to_backup.files }}"
|
||||
delegate_to: "{{ target_node }}"
|
||||
|
||||
- name: preserve mode
|
||||
- name: preserve mode on files
|
||||
file:
|
||||
path: "{{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}/{{ item.path }}"
|
||||
mode: "{{ item.mode }}"
|
||||
|
@ -82,6 +82,14 @@
|
|||
- name: restore mode
|
||||
when: mode == 'restore'
|
||||
block:
|
||||
- name: stat directories
|
||||
stat:
|
||||
path: "{{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}{{ item }}"
|
||||
register: dir_stat
|
||||
loop:
|
||||
- /etc/ceph
|
||||
- /var/lib/ceph
|
||||
|
||||
- name: get a list of files to be restored
|
||||
find:
|
||||
paths:
|
||||
|
@ -89,6 +97,27 @@
|
|||
recurse: yes
|
||||
register: file_to_restore
|
||||
|
||||
- name: create a list of directories to create
|
||||
set_fact:
|
||||
dir_to_create: "{{ dir_to_create | default([]) | union([{'path': item.item | replace(backup_dir + '/' + hostvars[target_node]['ansible_facts']['hostname'], ''), 'uid': item.stat.uid, 'gid': item.stat.gid, 'mode': item.stat.mode}]) }}"
|
||||
loop: "{{ dir_stat.results }}"
|
||||
delegate_to: "{{ target_node }}"
|
||||
|
||||
- name: create a liste of sub-directories to create
|
||||
set_fact:
|
||||
subdir_to_create: "{{ subdir_to_create | default([]) | union([{'path': item.path | dirname | replace(backup_dir + '/' + hostvars[target_node]['ansible_facts']['hostname'], ''), 'uid': item.uid, 'gid': item.gid, 'mode': item.mode}]) }}"
|
||||
loop: "{{ file_to_restore.files }}"
|
||||
|
||||
- name: ensure directories are created
|
||||
file:
|
||||
state: directory
|
||||
path: "{{ item.path }}"
|
||||
mode: "{{ item.mode }}"
|
||||
owner: "{{ item.uid }}"
|
||||
group: "{{ item.gid }}"
|
||||
loop: "{{ dir_to_create + subdir_to_create }}"
|
||||
delegate_to: "{{ target_node }}"
|
||||
|
||||
- name: restore files
|
||||
copy:
|
||||
src: "{{ item.path }}"
|
||||
|
|
Loading…
Reference in New Issue