|
|
|
---
|
|
|
|
- block:
|
|
|
|
|
|
|
|
- name: set the two regions for the source DB and the replica
|
|
|
|
set_fact:
|
|
|
|
region_src: "{{ aws_region }}"
|
|
|
|
region_dest: "{{ aws_region }}"
|
|
|
|
|
|
|
|
- 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 }}"
|
|
|
|
no_log: yes
|
|
|
|
|
|
|
|
- name: Ensure the resource doesn't exist
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}"
|
|
|
|
state: absent
|
|
|
|
skip_final_snapshot: True
|
|
|
|
region: "{{ region_src }}"
|
|
|
|
<<: *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 }}"
|
|
|
|
region: "{{ region_src }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: source_db
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- source_db.changed
|
|
|
|
- "source_db.db_instance_identifier == '{{ instance_id }}'"
|
|
|
|
|
|
|
|
- name: Create a read replica in a different region
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: present
|
|
|
|
source_db_instance_identifier: "{{ instance_id }}"
|
|
|
|
engine: mysql
|
|
|
|
username: "{{ username }}"
|
|
|
|
password: "{{ password }}"
|
|
|
|
read_replica: True
|
|
|
|
db_instance_class: "{{ db_instance_class }}"
|
|
|
|
allocated_storage: "{{ allocated_storage }}"
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: Test idempotence with a read replica
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: present
|
|
|
|
source_db_instance_identifier: "{{ instance_id }}"
|
|
|
|
engine: mysql
|
|
|
|
username: "{{ username }}"
|
|
|
|
password: "{{ password }}"
|
|
|
|
db_instance_class: "{{ db_instance_class }}"
|
|
|
|
allocated_storage: "{{ allocated_storage }}"
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- not result.changed
|
|
|
|
|
|
|
|
- name: Test idempotence with read_replica=True
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: present
|
|
|
|
read_replica: True
|
|
|
|
source_db_instance_identifier: "{{ instance_id }}"
|
|
|
|
engine: mysql
|
|
|
|
username: "{{ username }}"
|
|
|
|
password: "{{ password }}"
|
|
|
|
db_instance_class: "{{ db_instance_class }}"
|
|
|
|
allocated_storage: "{{ allocated_storage }}"
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: Promote the read replica
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: present
|
|
|
|
read_replica: False
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
- name: Test idempotence
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: present
|
|
|
|
read_replica: False
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *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
|
|
|
|
region: "{{ region_src }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: Remove the DB replica
|
|
|
|
rds_instance:
|
|
|
|
id: "{{ instance_id }}-replica"
|
|
|
|
state: absent
|
|
|
|
skip_final_snapshot: True
|
|
|
|
region: "{{ region_dest }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
ignore_errors: yes
|