rds_instance: add point-in-time instance restore test (#59411)

This commit is contained in:
Will Thames 2019-07-25 23:49:08 +10:00 committed by Sloane Hertel
parent ef59dd2ca2
commit 60c76be03c
4 changed files with 103 additions and 5 deletions

View file

@ -34,6 +34,7 @@
"rds:PromoteReadReplica",
"rds:RebootDBInstance",
"rds:RemoveTagsFromResource",
"rds:RestoreDBInstanceToPointInTime",
"rds:StartDBInstance",
"rds:StopDBInstance"
],

View file

@ -21,7 +21,7 @@
tags: read_replica
- include: ./test_vpc_security_groups.yml
tags: vpc_security_groups
#- include: ./test_restore_instance.yml # TODO: point-in-time, snapshot, s3
- include: ./test_restore_instance.yml # TODO: snapshot, s3
tags: restore
# TODO: uncomment after adding rds_cluster module
#- include: ./test_aurora.yml

View file

@ -51,7 +51,7 @@
rds_instance:
id: "{{ instance_id }}-replica"
state: present
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
@ -66,7 +66,7 @@
rds_instance:
id: "{{ instance_id }}-replica"
state: present
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
@ -85,7 +85,7 @@
id: "{{ instance_id }}-replica"
state: present
read_replica: True
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
@ -130,6 +130,7 @@
skip_final_snapshot: True
region: "{{ region_src }}"
<<: *aws_connection_info
ignore_errors: yes
- name: Remove the DB replica
rds_instance:
@ -138,3 +139,4 @@
skip_final_snapshot: True
region: "{{ region_dest }}"
<<: *aws_connection_info
ignore_errors: yes

View file

@ -0,0 +1,95 @@
---
- block:
- name: set up aws connection info
set_fact:
aws_connection_info: &aws_connection_info
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
security_token: "{{ security_token }}"
region: "{{ aws_region }}"
no_log: yes
- name: Ensure the resource doesn't exist
rds_instance:
id: "{{ instance_id }}"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
ignore_errors: yes
- name: Create a source DB instance
rds_instance:
id: "{{ instance_id }}"
state: present
engine: mysql
backup_retention_period: 1
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
<<: *aws_connection_info
register: source_db
- assert:
that:
- source_db.changed
- "source_db.db_instance_identifier == '{{ instance_id }}'"
- name: Create a point in time DB instance
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: present
source_db_instance_identifier: "{{ instance_id }}"
creation_source: instance
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
use_latest_restorable_time: True
<<: *aws_connection_info
register: result
- name: Test idempotence with a point in time replica
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: present
source_db_instance_identifier: "{{ instance_id }}"
creation_source: instance
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
restore_time: "{{ result.latest_restorable_time }}"
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
always:
- name: Remove the DB instance
rds_instance:
id: "{{ instance_id }}"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
ignore_errors: yes
- name: Remove the point in time restored DB
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
ignore_errors: yes