54
54
- name : backup mode
55
55
when : mode == 'backup'
56
56
block :
57
- - name : find files
58
- find :
59
- paths :
60
- - /etc/ceph
61
- - /var/lib/ceph
62
- recurse : yes
63
- register : file_to_backup
57
+ - name : create a temp directory
58
+ ansible.builtin.tempfile :
59
+ state : directory
60
+ suffix : ansible-archive-ceph
61
+ register : tmp_dir
62
+ delegate_to : " {{ target_node }}"
63
+
64
+ - name : archive files
65
+ archive :
66
+ path : " {{ item }}"
67
+ dest : " {{ tmp_dir.path }}/backup{{ item | replace('/', '-') }}.tar"
68
+ format : tar
64
69
delegate_to : " {{ target_node }}"
70
+ loop :
71
+ - /etc/ceph
72
+ - /var/lib/ceph
73
+
74
+ - name : create backup directory
75
+ become : false
76
+ file :
77
+ path : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}"
78
+ state : directory
65
79
66
80
- name : backup files
67
81
fetch :
68
- src : " {{ item .path }}"
69
- dest : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}/{{ item.path }} "
82
+ src : " {{ tmp_dir .path }}/backup{{ item | replace('/', '-') }}.tar "
83
+ dest : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}/backup {{ item | replace('/', '-') }}.tar "
70
84
flat : yes
71
- loop : " {{ file_to_backup.files }}"
85
+ loop :
86
+ - /etc/ceph
87
+ - /var/lib/ceph
72
88
delegate_to : " {{ target_node }}"
73
89
74
- - name : preserve mode on files
90
+ - name : remove temp directory
75
91
file :
76
- path : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}/{{ item.path }}"
77
- mode : " {{ item.mode }}"
78
- owner : " {{ item.uid }}"
79
- group : " {{ item.gid }}"
80
- loop : " {{ file_to_backup.files }}"
92
+ path : " {{ tmp_dir.path }}"
93
+ state : absent
94
+ delegate_to : " {{ target_node }}"
81
95
82
96
- name : restore mode
83
97
when : mode == 'restore'
84
98
block :
85
- - name : stat directories
86
- stat :
87
- path : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}{{ item }} "
88
- register : dir_stat
99
+ - name : unarchive files
100
+ ansible.builtin.unarchive :
101
+ src : " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}/backup {{ item | replace('/', '-') }}.tar "
102
+ dest : " {{ item | dirname }} "
89
103
loop :
90
104
- /etc/ceph
91
105
- /var/lib/ceph
92
-
93
- - name : get a list of files to be restored
94
- find :
95
- paths :
96
- - " {{ backup_dir }}/{{ hostvars[target_node]['ansible_facts']['hostname'] }}"
97
- recurse : yes
98
- register : file_to_restore
99
-
100
- - name : create a list of directories to create
101
- set_fact :
102
- 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}]) }}"
103
- loop : " {{ dir_stat.results }}"
104
- delegate_to : " {{ target_node }}"
105
-
106
- - name : create a liste of sub-directories to create
107
- set_fact :
108
- 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}]) }}"
109
- loop : " {{ file_to_restore.files }}"
110
-
111
- - name : ensure directories are created
112
- file :
113
- state : directory
114
- path : " {{ item.path }}"
115
- mode : " {{ item.mode }}"
116
- owner : " {{ item.uid }}"
117
- group : " {{ item.gid }}"
118
- loop : " {{ dir_to_create + subdir_to_create }}"
119
106
delegate_to : " {{ target_node }}"
120
-
121
- - name : restore files
122
- copy :
123
- src : " {{ item.path }}"
124
- dest : " {{ item.path | replace(backup_dir + '/' + hostvars[target_node]['ansible_facts']['hostname'], '') }}"
125
- mode : preserve
126
- loop : " {{ file_to_restore.files }}"
127
- delegate_to : " {{ target_node }}"
0 commit comments