mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
Aws ssm multiple fixes (#35569)
* aws ssm parameter lookup test case - fails demonstrating no exception when parameter missing * aws ssm parameter lookup - fail in case parameter doesn't exist * aws ssm parameter lookup test case - failing case for nice return from path lookup * aws ssm parameter lookup - convert incoming taglist to a key-value dictionary * aws ssm parameter lookup - pep8 / style clean up * aws_ssm lookup plugin rewrite for more standard interface * aws_ssm module and lookup - introduce integration test and fix: * aws_ssm module and lookup - error case integraton test and many PEP8 and other cleanups * aws ssm parameter lookup - Various fixes in response to review + recursive fix & test * aws ssm parameter lookup - more in response to review - shertel/abadger * aws ssm parameter lookup unit test - move to mocker according to abadger * aws ssm parameter lookup - integrate with new documentation fragment * aws ssm parameter lookup - accept either aws_profile or boto_profile * aws ssm parameter lookup - eliminate lookup document fragment until env vars are fixed later
This commit is contained in:
parent
49eb0c49ea
commit
d31ded47fb
6 changed files with 451 additions and 154 deletions
2
test/integration/targets/aws_ssm_parameters/aliases
Normal file
2
test/integration/targets/aws_ssm_parameters/aliases
Normal file
|
@ -0,0 +1,2 @@
|
|||
cloud/aws
|
||||
posix/ci/cloud/group4/aws
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
# defaults file for aws_lambda test
|
||||
ssm_key_prefix: '{{resource_prefix}}'
|
136
test/integration/targets/aws_ssm_parameters/tasks/main.yml
Normal file
136
test/integration/targets/aws_ssm_parameters/tasks/main.yml
Normal file
|
@ -0,0 +1,136 @@
|
|||
---
|
||||
#
|
||||
# Author: Michael De La Rue
|
||||
# based on aws_lambda test cases
|
||||
- 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: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/Hello"
|
||||
description: "This is your first key"
|
||||
value: "World"
|
||||
<<: *aws_connection_info
|
||||
|
||||
- name: Check that parameter was stored correctly
|
||||
assert:
|
||||
that:
|
||||
- "'{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/Hello', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token )}}' == 'World'"
|
||||
|
||||
# ============================================================
|
||||
- name: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/path/wonvar"
|
||||
description: "This is your first key"
|
||||
value: "won value"
|
||||
<<: *aws_connection_info
|
||||
|
||||
- name: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/path/toovar"
|
||||
description: "This is your first key"
|
||||
value: "too value"
|
||||
<<: *aws_connection_info
|
||||
|
||||
- name: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/path/tree/treevar"
|
||||
description: "This is your first key"
|
||||
value: "tree value"
|
||||
<<: *aws_connection_info
|
||||
|
||||
# ============================================================
|
||||
- name: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/deeppath/wondir/samevar"
|
||||
description: "This is your first key"
|
||||
value: "won value"
|
||||
<<: *aws_connection_info
|
||||
|
||||
- name: Create or update key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/deeppath/toodir/samevar"
|
||||
description: "This is your first key"
|
||||
value: "too value"
|
||||
<<: *aws_connection_info
|
||||
|
||||
# ============================================================
|
||||
- name: debug the lookup
|
||||
debug:
|
||||
msg: "{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/path', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token, bypath=True )}}'"
|
||||
|
||||
- name: Check that parameter path is stored and retrieved
|
||||
assert:
|
||||
that:
|
||||
- "'{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/path', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token, bypath=True, shortnames=true ) | to_json }}' == '{\"toovar\": \"too value\", \"wonvar\": \"won value\"}'"
|
||||
|
||||
# ============================================================
|
||||
- name: Error in case we don't find a named parameter
|
||||
debug:
|
||||
msg: "'{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/Goodbye', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token )}}' == 'World'"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- name: assert failure from failure to find parameter
|
||||
assert:
|
||||
that:
|
||||
- 'result.failed'
|
||||
- "'Undefined AWS SSM parameter' in result.msg"
|
||||
|
||||
# ============================================================
|
||||
- name: Handle multiple paths with one that doesn't exist - default to full names.
|
||||
assert:
|
||||
that:
|
||||
- "'{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/path', '/' ~ ssm_key_prefix ~ '/dont_create_this_path_you_will_break_the_ansible_tests', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token, bypath=True ) | to_json }}' in ( '[{\"/' ~ ssm_key_prefix ~ '/path/toovar\": \"too value\", \"/' ~ ssm_key_prefix ~ '/path/wonvar\": \"won value\"}, {}]', '[{\"/' ~ ssm_key_prefix ~ '/path/wonvar\": \"won value\", \"/' ~ ssm_key_prefix ~ '/path/toovar\": \"too value\"}, {}]' )"
|
||||
|
||||
|
||||
# ============================================================
|
||||
# this may be a bit of a nasty test case; we should perhaps accept _either_ value that was stored
|
||||
# in the two variables named 'samevar'
|
||||
|
||||
- name: Handle multiple paths with one that doesn't exist - shortnames - including overlap.
|
||||
assert:
|
||||
that:
|
||||
- "'{{lookup('aws_ssm', '/' ~ ssm_key_prefix ~ '/path', '/' ~ ssm_key_prefix ~ '/dont_create_this_path_you_will_break_the_ansible_tests', '/' ~ ssm_key_prefix ~ '/deeppath', region=ec2_region, aws_access_key=ec2_access_key, aws_secret_key=ec2_secret_key, aws_security_token=security_token, bypath=True, shortnames=true, recursive=true ) | to_json }}' == '[{\"toovar\": \"too value\", \"treevar\": \"tree value\", \"wonvar\": \"won value\"}, {}, {\"samevar\": \"won value\"}]'"
|
||||
|
||||
|
||||
# ============================================================
|
||||
- name: Delete key/value pair in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/Hello"
|
||||
state: absent
|
||||
<<: *aws_connection_info
|
||||
|
||||
# ============================================================
|
||||
- name: Attempt delete key/value pair in aws parameter store again
|
||||
aws_ssm_parameter_store:
|
||||
name: "/{{ssm_key_prefix}}/Hello"
|
||||
state: absent
|
||||
<<: *aws_connection_info
|
||||
register: result
|
||||
|
||||
- name: assert that changed is False since parameter should be deleted
|
||||
assert:
|
||||
that:
|
||||
- result.changed == False
|
||||
always:
|
||||
# ============================================================
|
||||
- name: Delete remaining key/value pairs in aws parameter store
|
||||
aws_ssm_parameter_store:
|
||||
name: "{{item}}"
|
||||
state: absent
|
||||
<<: *aws_connection_info
|
||||
with_items:
|
||||
- "/{{ssm_key_prefix}}/Hello"
|
||||
- "/{{ssm_key_prefix}}/path/wonvar"
|
||||
- "/{{ssm_key_prefix}}/path/toovar"
|
||||
- "/{{ssm_key_prefix}}/path/tree/treevar"
|
Loading…
Add table
Add a link
Reference in a new issue