113336d6f1
* Add functions to retrieve the allowed and required parameters for boto3 client methods * Add custom waiter for stopping an RDS DB instance * Add rds_instance module * Add rds_instance integration tests * address requested changes from ryansb * address requested changes from willthames * address requested changes from dmsimard * Fix final snapshots Fix idempotence with already-deleting DB instances Remove unused import from module_utils/aws/core.py Consolidate function to get all boto3 client method parameters and the subset of required parameters * Add some additional rds_instance integration tests * Add some common functions to module_utils/aws/rds * Move common code out of rds_instance * Remove hardcoded engine choices and require the minimum boto3 * Document wait behavior * Provide a list of valid engines in the error message if it is invalid Add supported methods to whitelist Remove AWSRetry around waiter Wait for a less crazy amount of time Remove unused variables * Add a test for an invalid engine option * pep8 * Missed adding a method to the whitelist * Use retries * Fix some little things * Fix more things * Improve error message * Support creating cross-region read replicas * Remove unused imports * Add retry when getting RDS instance * Soft-check required options so module fails properly when options are missing * Fix mariadb parameter version * Fix cross-region read_replica creation and tests * fix modify tests * Fix a modification test * Fix typo * Remove test for option_group_name that exists for this account but may not for others and added as a TODO to do properly
85 lines
2.6 KiB
YAML
85 lines
2.6 KiB
YAML
---
|
|
- 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 mariadb instance
|
|
rds_instance:
|
|
id: "{{ instance_id }}"
|
|
state: present
|
|
engine: mariadb
|
|
username: "{{ username }}"
|
|
password: "{{ password }}"
|
|
db_instance_class: "{{ db_instance_class }}"
|
|
allocated_storage: "{{ allocated_storage }}"
|
|
<<: *aws_connection_info
|
|
register: result
|
|
|
|
- name: Delete the DB instance
|
|
rds_instance:
|
|
id: "{{ instance_id }}"
|
|
state: absent
|
|
final_snapshot_identifier: "{{ instance_id }}"
|
|
<<: *aws_connection_info
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result.changed
|
|
- "result.final_snapshot.db_instance_identifier == '{{ instance_id }}'"
|
|
|
|
- name: Check that snapshot exists
|
|
rds_snapshot_facts:
|
|
db_snapshot_identifier: "{{ instance_id }}"
|
|
<<: *aws_connection_info
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- "result.snapshots | length == 1"
|
|
- "result.snapshots.0.engine == 'mariadb'"
|
|
|
|
always:
|
|
|
|
- name: Use AWS CLI to delete the snapshot
|
|
command: "aws rds delete-db-snapshot --db-snapshot-identifier '{{ instance_id }}'"
|
|
environment:
|
|
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
|
|
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
|
|
AWS_SESSION_TOKEN: "{{ security_token }}"
|
|
AWS_DEFAULT_REGION: "{{ aws_region }}"
|
|
|
|
# TODO: Uncomment once rds_snapshot module exists
|
|
#- name: Remove the snapshot
|
|
# rds_snapshot:
|
|
# db_snapshot_identifier: "{{ instance_id }}"
|
|
# state: absent
|
|
# <<: *aws_connection_info
|
|
# ignore_errors: yes
|
|
|
|
- name: Remove the DB instance
|
|
rds_instance:
|
|
id: "{{ instance_id }}"
|
|
state: absent
|
|
skip_final_snapshot: True
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|