200 lines
6.2 KiB
YAML
200 lines
6.2 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
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- "result.db_instance_identifier == '{{ instance_id }}'"
|
||
|
|
||
|
- name: Modify the instance name without immediate application
|
||
|
rds_instance:
|
||
|
id: "{{ instance_id }}"
|
||
|
state: present
|
||
|
new_id: "{{ modified_instance_id }}"
|
||
|
apply_immediately: False
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- 'result.db_instance_identifier == "{{ instance_id }}"'
|
||
|
|
||
|
- name: Immediately apply the pending update
|
||
|
rds_instance:
|
||
|
id: "{{ instance_id }}"
|
||
|
state: present
|
||
|
new_id: "{{ modified_instance_id }}"
|
||
|
apply_immediately: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- 'result.db_instance_identifier == "{{ modified_instance_id }}"'
|
||
|
|
||
|
- name: Modify the instance immediately
|
||
|
rds_instance:
|
||
|
id: '{{ modified_instance_id }}'
|
||
|
state: present
|
||
|
new_id: '{{ instance_id }}'
|
||
|
apply_immediately: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- 'result.db_instance_identifier == "{{ instance_id }}"'
|
||
|
|
||
|
- name: Check mode - modify the password
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: present
|
||
|
password: '{{ password }}'
|
||
|
force_update_password: True
|
||
|
apply_immediately: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
check_mode: True
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
|
||
|
- name: Modify the password
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: present
|
||
|
password: '{{ password }}'
|
||
|
force_update_password: True
|
||
|
apply_immediately: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
|
||
|
# TODO: test modifying db_subnet_group_name, db_security_groups, db_parameter_group_name, option_group_name,
|
||
|
# monitoring_role_arn, monitoring_interval, domain, domain_iam_role_name, cloudwatch_logs_export_configuration
|
||
|
|
||
|
- name: Modify several attributes
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: present
|
||
|
allocated_storage: 30
|
||
|
db_instance_class: "{{ modified_db_instance_class }}"
|
||
|
backup_retention_period: 2
|
||
|
preferred_backup_window: "05:00-06:00"
|
||
|
preferred_maintenance_window: "mon:06:20-mon:06:50"
|
||
|
engine_version: "10.1.26"
|
||
|
allow_major_version_upgrade: true
|
||
|
auto_minor_version_upgrade: false
|
||
|
port: 1150
|
||
|
apply_immediately: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- result.pending_modified_values.allocated_storage == 30
|
||
|
- result.pending_modified_values.port == 1150
|
||
|
- 'result.pending_modified_values.db_instance_class == "db.t2.medium"'
|
||
|
- 'result.pending_modified_values.engine_version == "10.1.26"'
|
||
|
|
||
|
- name: Idempotence modifying several pending attributes
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: present
|
||
|
allocated_storage: 30
|
||
|
db_instance_class: "{{ modified_db_instance_class }}"
|
||
|
backup_retention_period: 2
|
||
|
preferred_backup_window: "05:00-06:00"
|
||
|
preferred_maintenance_window: "mon:06:20-mon:06:50"
|
||
|
engine_version: "10.1.26"
|
||
|
allow_major_version_upgrade: true
|
||
|
auto_minor_version_upgrade: false
|
||
|
port: 1150
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
retries: 30
|
||
|
delay: 10
|
||
|
until: result is not failed
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- not result.changed
|
||
|
- '"allocated_storage" in result.pending_modified_values or result.allocated_storage == 30'
|
||
|
- '"port" in result.pending_modified_values or result.endpoint.port == 1150'
|
||
|
- '"db_instance_class" in result.pending_modified_values or result.db_instance_class == "db.t2.medium"'
|
||
|
- '"engine_version" in result.pending_modified_values or result.engine_version == "10.1.26"'
|
||
|
|
||
|
- name: Reboot the instance to update the modified values and add tags
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: rebooted
|
||
|
tags:
|
||
|
Created_by: Ansible rds_instance tests
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- name: Delete the instance
|
||
|
rds_instance:
|
||
|
id: '{{ instance_id }}'
|
||
|
state: absent
|
||
|
skip_final_snapshot: True
|
||
|
<<: *aws_connection_info
|
||
|
register: result
|
||
|
|
||
|
- assert:
|
||
|
that:
|
||
|
- result.changed
|
||
|
- '"pending_modified_values" not in result'
|
||
|
|
||
|
always:
|
||
|
|
||
|
- name: Delete the instance
|
||
|
rds_instance:
|
||
|
id: '{{ item }}'
|
||
|
state: absent
|
||
|
skip_final_snapshot: True
|
||
|
<<: *aws_connection_info
|
||
|
loop: ['{{ instance_id }}', '{{ modified_instance_id }}']
|
||
|
ignore_errors: yes
|