--- - 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