Skip to content

Commit af2847c

Browse files
Add more time to check snapshot
and fix old snapshot
1 parent dd44fa7 commit af2847c

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

roles/cs.aws-rds-gfs-backup/tasks/cluster-db.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
shell: "aws rds create-db-cluster-snapshot --db-cluster-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --db-cluster-identifier '{{ rds_gfs_cluster_id }}' --tags '{{ rds_gfs_daily_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
33

44
- name: Wait until daily cluster snapshot is created
5-
shell: "aws rds describe-db-cluster-snapshots --db-cluster-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --region '{{ aws_region }}'"
5+
shell: "aws rds describe-db-cluster-snapshots --snapshot-type manual --db-cluster-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --region '{{ aws_region }}'"
66
register: rds_gfs_daily_snapshot_status
77
until: (rds_gfs_daily_snapshot_status.stdout | default({})|from_json).DBClusterSnapshots[0].Status == "available"
88
retries: 40

roles/cs.aws-rds-gfs-backup/tasks/single-db.yml

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
- name: Create daily snapshot
22
shell: "aws rds create-db-snapshot --db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --db-instance-identifier '{{ rds_gfs_instance_id }}' --tags '{{ rds_gfs_daily_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
33

4-
- name: Wait until daily snapshot is created
5-
shell: "aws rds wait db-snapshot-completed --db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --region '{{ aws_region }}'"
6-
7-
- name: Create weekly snapshot from the daily one
8-
shell: "aws rds copy-db-snapshot --target-db-snapshot-identifier '{{ rds_gfs_weekly_snapshot_id }}' --source-db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --tags '{{ rds_gfs_weekly_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
9-
when: ansible_date_time.weekday_number | int == rds_gfs_weekly_snapshot_weekday_nr
10-
11-
- name: Create monthly snapshot from the daily one
12-
shell: "aws rds copy-db-snapshot --target-db-snapshot-identifier '{{ rds_gfs_monthly_snapshot_id }}' --source-db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --tags '{{ rds_gfs_monthly_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
13-
when: ansible_date_time.day | int == rds_gfs_monthly_snapshot_monthday_nr
4+
- name: Wait until daily cluster snapshot is created
5+
shell: "aws rds describe-db-snapshots --snapshot-type manual --db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --region '{{ aws_region }}'"
6+
register: rds_gfs_daily_snapshot_status
7+
until: (rds_gfs_daily_snapshot_status.stdout | default({})|from_json).DBSnapshots[0].Status == "available"
8+
retries: 80
9+
delay: 15
1410

1511
- name: Get current snapshots
1612
amazon.aws.rds_snapshot_info:
@@ -21,6 +17,31 @@
2117

2218
- debug: var=_rds_gfs_snapshots
2319

20+
- name: Create weekly snapshot from the daily one
21+
when: ansible_date_time.weekday_number | int == rds_gfs_weekly_snapshot_weekday_nr
22+
block:
23+
- name: Copy snapshow
24+
shell: "aws rds copy-db-snapshot --target-db-snapshot-identifier '{{ rds_gfs_weekly_snapshot_id }}' --source-db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --tags '{{ rds_gfs_weekly_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
25+
- name: Wait until weekly snapshot is created
26+
shell: "aws rds describe-db-snapshots --db-snapshot-identifier '{{ rds_gfs_weekly_snapshot_id }}' --region '{{ aws_region }}'"
27+
register: rds_gfs_weekly_snapshot_status
28+
until: (rds_gfs_weekly_snapshot_status.stdout | default({})|from_json).DBSnapshots[0].Status == "available"
29+
retries: 60
30+
delay: 15
31+
32+
- name: Create monthly snapshot from the daily one
33+
when: ansible_date_time.day | int == rds_gfs_monthly_snapshot_monthday_nr
34+
block:
35+
- name: Copy snapshot
36+
shell: "aws rds copy-db-snapshot --target-db-snapshot-identifier '{{ rds_gfs_monthly_snapshot_id }}' --source-db-snapshot-identifier '{{ rds_gfs_daily_snapshot_id }}' --tags '{{ rds_gfs_monthly_snapshot_tags | to_json }}' --region '{{ aws_region }}'"
37+
- name: Wait until monthly snapshot is created
38+
shell: "aws rds describe-db-snapshots --db-snapshot-identifier '{{ rds_gfs_monthly_snapshot_id }}' --region '{{ aws_region }}'"
39+
register: rds_gfs_monthly_snapshot_status
40+
until: (rds_gfs_monthly_snapshot_status.stdout | default({})|from_json).DBSnapshots[0].Status == "available"
41+
retries: 40
42+
delay: 15
43+
44+
2445
- name: Get snapshots to be deleted
2546
set_fact:
2647
# Somehow I cannot get json_query to sort by creation time, every other attr works but not this

0 commit comments

Comments
 (0)