You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/rds_instance/tasks/test_read_replica.yml

141 lines
4.1 KiB
YAML

---
- block:
- name: set the two regions for the source DB and the replica
set_fact:
region_src: "{{ aws_region }}"
region_dest: "us-east-2"
- 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: "{{ source_db.db_instance_arn }}"
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: "{{ source_db.db_instance_arn }}"
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: "{{ source_db.db_instance_arn }}"
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
- name: Remove the DB replica
rds_instance:
id: "{{ instance_id }}-replica"
state: absent
skip_final_snapshot: True
region: "{{ region_dest }}"
<<: *aws_connection_info