2017-01-17 20:45:43 +01:00
|
|
|
---
|
|
|
|
- set_fact:
|
2018-01-24 01:42:41 +01:00
|
|
|
ecr_name: '{{ resource_prefix }}-ecr'
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
- block:
|
2017-05-03 02:20:39 +02:00
|
|
|
|
2017-01-17 20:45:43 +01:00
|
|
|
- name: When creating with check mode
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should skip, change and create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is skipped
|
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When specifying a registry that is inaccessible
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
registry_id: 999999999999
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
- name: it should fail with an AccessDeniedException
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is failed
|
2017-01-17 20:45:43 +01:00
|
|
|
- '"AccessDeniedException" in result.msg'
|
|
|
|
|
|
|
|
|
|
|
|
- name: When creating a repository
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- result.created
|
|
|
|
|
2019-10-11 18:13:13 +02:00
|
|
|
- name: it should have been configured as mutable by default
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.repository.imageTagMutability == "MUTABLE"
|
|
|
|
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
- name: When creating a repository that already exists in check mode
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should not skip, should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not skipped
|
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When creating a repository that already exists
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
2018-03-12 11:00:19 +01:00
|
|
|
- name: When in check mode, and deleting a policy that does not exist
|
2017-01-17 20:45:43 +01:00
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
delete_policy: yes
|
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should not skip and not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not skipped
|
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When in check mode, setting policy on a repository that has no policy
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy: '{{ policy }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should skip, change and not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is skipped
|
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When setting policy on a repository that has no policy
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy: '{{ policy }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When in check mode, and deleting a policy that exists
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
delete_policy: yes
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should skip, change but not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is skipped
|
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When deleting a policy that exists
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
delete_policy: yes
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When setting a policy as a string
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy: '{{ policy | to_json }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When setting a policy to its current value
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy: '{{ policy }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When omitting policy on a repository that has a policy
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When specifying both policy and delete_policy
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy: '{{ policy }}'
|
|
|
|
delete_policy: yes
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
- name: it should fail
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is failed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When specifying invalid JSON for policy
|
|
|
|
ecs_ecr:
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
policy_text: "Ceci n'est pas une JSON"
|
2017-05-03 02:20:39 +02:00
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
- name: it should fail
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is failed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When in check mode, deleting a policy that exists
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
state: absent
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should skip, change and not create
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is skipped
|
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
- not result.created
|
|
|
|
|
|
|
|
|
|
|
|
- name: When deleting a policy that exists
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
state: absent
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When in check mode, deleting a policy that does not exist
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
state: absent
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not skipped
|
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
- name: When deleting a policy that does not exist
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
state: absent
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
2017-01-17 20:45:43 +01:00
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
2017-11-27 23:58:08 +01:00
|
|
|
- result is not changed
|
2017-01-17 20:45:43 +01:00
|
|
|
|
2019-10-11 18:13:13 +02:00
|
|
|
- name: When creating an immutable repository
|
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
|
|
|
image_tag_mutability: immutable
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and create
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result is changed
|
|
|
|
- result.created
|
|
|
|
|
|
|
|
- name: it should have been configured as immutable
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.repository.imageTagMutability == "IMMUTABLE"
|
|
|
|
|
|
|
|
|
|
|
|
- name: When configuring an existing immutable repository to be mutable in check mode
|
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
|
|
|
image_tag_mutability: mutable
|
|
|
|
register: result
|
|
|
|
check_mode: yes
|
|
|
|
|
|
|
|
- name: it should skip, change and configured mutable
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result is skipped
|
|
|
|
- result is changed
|
|
|
|
- result.repository.imageTagMutability == "MUTABLE"
|
|
|
|
|
|
|
|
- name: When configuring an existing immutable repository to be mutable
|
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
|
|
|
image_tag_mutability: mutable
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should change and configured mutable
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result is changed
|
|
|
|
- result.repository.imageTagMutability == "MUTABLE"
|
|
|
|
|
|
|
|
- name: When configuring an already mutable repository to be mutable
|
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|
|
|
|
image_tag_mutability: mutable
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: it should not change
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result is not changed
|
|
|
|
|
2017-01-17 20:45:43 +01:00
|
|
|
always:
|
2017-05-03 02:20:39 +02:00
|
|
|
|
2017-01-17 20:45:43 +01:00
|
|
|
- name: Delete lingering ECR repository
|
2017-05-03 02:20:39 +02:00
|
|
|
ecs_ecr:
|
|
|
|
name: '{{ ecr_name }}'
|
|
|
|
region: '{{ ec2_region }}'
|
|
|
|
state: absent
|
|
|
|
ec2_access_key: '{{ec2_access_key}}'
|
|
|
|
ec2_secret_key: '{{ec2_secret_key}}'
|
|
|
|
security_token: '{{security_token}}'
|