diff --git a/changelogs/fragments/854-ssm-bucket-region.yml b/changelogs/fragments/854-ssm-bucket-region.yml new file mode 100644 index 00000000000..2c46ced8734 --- /dev/null +++ b/changelogs/fragments/854-ssm-bucket-region.yml @@ -0,0 +1,2 @@ +minor_changes: + - aws_ssm connection plugin - added support for an independent bucket region (https://github.com/ansible-collections/community.aws/pull/854). \ No newline at end of file diff --git a/plugins/connection/aws_ssm.py b/plugins/connection/aws_ssm.py index 40724cfbbdb..8b14b850fc4 100644 --- a/plugins/connection/aws_ssm.py +++ b/plugins/connection/aws_ssm.py @@ -48,6 +48,11 @@ description: The name of the S3 bucket used for file transfers. vars: - name: ansible_aws_ssm_bucket_name + bucket_region: + description: The region of the S3 bucket used for file transfers. By default inherit "region" or "us-east-1" if undefined. + vars: + - name: ansible_aws_ssm_bucket_region + version_added: 3.0.0 plugin: description: This defines the location of the session-manager-plugin binary. vars: @@ -131,10 +136,14 @@ #plugin: aws_ec2 #regions: # - us-east-1 +# - eu-west-1 #hostnames: # - instance-id #filters: # tag:SSMTag: ssmlinux +#compose: +# ansible_aws_ssm_instance_id: instance_id +# ansible_aws_ssm_region: location.region # ----------------------- - name: install aws-cli hosts: all @@ -142,7 +151,7 @@ vars: ansible_connection: aws_ssm ansible_aws_ssm_bucket_name: nameofthebucket - ansible_aws_ssm_region: us-east-1 + ansible_aws_ssm_bucket_region: eu-west-1 tasks: - name: aws-cli raw: yum install -y awscli @@ -154,10 +163,14 @@ #plugin: aws_ec2 #regions: # - us-east-1 +# - eu-west-1 #hostnames: # - instance-id #filters: # tag:SSMTag: ssmwindows +#compose: +# ansible_aws_ssm_instance_id: instance_id +# ansible_aws_ssm_region: location.region # ----------------------- - name: Create a dir. hosts: all @@ -166,7 +179,7 @@ ansible_connection: aws_ssm ansible_shell_type: powershell ansible_aws_ssm_bucket_name: nameofthebucket - ansible_aws_ssm_region: us-east-1 + ansible_aws_ssm_bucket_region: eu-west-1 tasks: - name: Create the directory win_file: @@ -180,7 +193,7 @@ vars: ansible_connection: aws_ssm ansible_aws_ssm_bucket_name: nameofthebucket - ansible_aws_ssm_region: us-west-2 + ansible_aws_ssm_bucket_region: us-west-2 ansible_aws_ssm_bucket_sse_mode: 'aws:kms' ansible_aws_ssm_bucket_sse_kms_key_id: alias/kms-key-alias tasks: @@ -534,7 +547,7 @@ def _flush_stderr(self, subprocess): def _get_url(self, client_method, bucket_name, out_path, http_method, profile_name, extra_args=None): ''' Generate URL for get_object / put_object ''' - region_name = self.get_option('region') or 'us-east-1' + region_name = self.get_option('bucket_region') or self.get_option('region') or 'us-east-1' client = self._get_boto_client('s3', region_name=region_name, profile_name=profile_name) params = {'Bucket': bucket_name, 'Key': out_path} if extra_args is not None: diff --git a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/defaults/main.yml b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/defaults/main.yml index 513c35dae33..7640f8c14f1 100644 --- a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/defaults/main.yml +++ b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/defaults/main.yml @@ -7,4 +7,5 @@ windows_ami_name: Windows_Server-2019-English-Full-Base-* # see: # - https://github.com/mattclay/aws-terminator/pull/181 # - https://github.com/ansible-collections/community.aws/pull/763 -s3_bucket_name: ssm-encrypted-test-bucket +s3_bucket_name: "{{ tiny_prefix }}-ssm-encrypted-test-bucket" +s3_bucket_region: us-west-2 diff --git a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/tasks/main.yml b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/tasks/main.yml index d81d756c34e..b32fa80fd01 100644 --- a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/tasks/main.yml +++ b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/tasks/main.yml @@ -109,10 +109,11 @@ tags: ansible-test: '{{ resource_prefix }}' - # - name: Create S3 bucket - # s3_bucket: - # name: "{{resource_prefix}}-aws-ssm-s3" - # register: s3_output + - name: Create S3 bucket + s3_bucket: + name: "{{ s3_bucket_name }}" + region: "{{ s3_bucket_region }}" + register: s3_output - name: Create Inventory file template: @@ -138,11 +139,11 @@ src: ec2_windows_vars_to_delete.yml.j2 ignore_errors: yes - # - name: Create S3 vars_to_delete.yml - # template: - # dest: "{{playbook_dir}}/s3_vars_to_delete.yml" - # src: s3_vars_to_delete.yml.j2 - # ignore_errors: yes + - name: Create S3 vars_to_delete.yml + template: + dest: "{{playbook_dir}}/s3_vars_to_delete.yml" + src: s3_vars_to_delete.yml.j2 + ignore_errors: yes - name: Create IAM Role vars_to_delete.yml template: diff --git a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/inventory-combined.aws_ssm.j2 b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/inventory-combined.aws_ssm.j2 index f8296e23044..adc4b79eb87 100644 --- a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/inventory-combined.aws_ssm.j2 +++ b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/inventory-combined.aws_ssm.j2 @@ -21,6 +21,7 @@ aws_ssm_linux [aws_ssm:vars] ansible_connection=community.aws.aws_ssm ansible_aws_ssm_bucket_name={{s3_bucket_name}} +ansible_aws_ssm_bucket_region={{s3_bucket_region}} ansible_aws_ssm_plugin=/usr/local/sessionmanagerplugin/bin/session-manager-plugin ansible_python_interpreter=/usr/bin/env python local_tmp=/tmp/ansible-local- diff --git a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/s3_vars_to_delete.yml.j2 b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/s3_vars_to_delete.yml.j2 index d29071a9f98..3839fb3c6ea 100644 --- a/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/s3_vars_to_delete.yml.j2 +++ b/tests/integration/targets/connection_aws_ssm/aws_ssm_integration_test_setup/templates/s3_vars_to_delete.yml.j2 @@ -1,2 +1,2 @@ --- -#bucket_name: {{s3_output.name}} +bucket_name: {{s3_output.name}}