fbcd6f8a65
Fargate instances do not require memory and cpu descriptors. EC2 instances do require descriptions. https://botocore.readthedocs.io/en/latest/reference/services/ecs.html#ECS.Client.describe_task_definition Fargate requires that cpu and memory be defined at task definition level. EC2 launch requires them to be defined at the container level. Fargate requires the use of awsvpc for the networking_mode. Also updated, the documentation regarding where and when memory/cpu needs to the assigned. The task_definition variable for the awspvc configuration colided with the ecs_service for the bridge network. This would cause the test to fail. Add testing for fargate Add examples for fargate and ec2
202 lines
6.9 KiB
YAML
202 lines
6.9 KiB
YAML
- hosts: localhost
|
|
connection: local
|
|
vars:
|
|
resource_prefix: 'ansible-testing'
|
|
|
|
tasks:
|
|
- 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: True
|
|
|
|
- name: create ecs cluster
|
|
ecs_cluster:
|
|
name: "{{ resource_prefix }}"
|
|
state: present
|
|
<<: *aws_connection_info
|
|
|
|
- name: create ecs_taskdefinition with bridged network
|
|
ecs_taskdefinition:
|
|
containers:
|
|
- name: my_container
|
|
image: ubuntu
|
|
memory: 128
|
|
family: "{{ resource_prefix }}"
|
|
state: present
|
|
network_mode: bridge
|
|
<<: *aws_connection_info
|
|
register: ecs_taskdefinition_creation
|
|
|
|
- name: create ecs_taskdefinition with awsvpc network
|
|
ecs_taskdefinition:
|
|
containers:
|
|
- name: my_container
|
|
image: ubuntu
|
|
memory: 128
|
|
family: "{{ resource_prefix }}-vpc"
|
|
state: present
|
|
network_mode: awsvpc
|
|
<<: *aws_connection_info
|
|
register: ecs_taskdefinition_creation_vpc
|
|
|
|
- name: ecs_taskdefinition works fine even when older botocore is used
|
|
assert:
|
|
that:
|
|
- ecs_taskdefinition_creation_vpc.changed
|
|
|
|
- name: create ecs_service using bridged network
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}"
|
|
desired_count: 1
|
|
state: present
|
|
<<: *aws_connection_info
|
|
register: ecs_service_creation
|
|
|
|
- name: create ecs_service using awsvpc network_configuration
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}-vpc"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}-vpc"
|
|
desired_count: 1
|
|
network_configuration:
|
|
subnets:
|
|
- subnet-abcd1234
|
|
groups:
|
|
- sg-abcd1234
|
|
state: present
|
|
<<: *aws_connection_info
|
|
register: ecs_service_creation_vpc
|
|
ignore_errors: yes
|
|
|
|
- name: check that graceful failure message is returned from ecs_service
|
|
assert:
|
|
that:
|
|
- ecs_service_creation_vpc.failed
|
|
- 'ecs_service_creation_vpc.msg == "botocore needs to be version 1.7.44 or higher to use network configuration"'
|
|
|
|
- name: create ecs_service using awsvpc network_configuration and launch_type
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}-vpc"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}-vpc"
|
|
desired_count: 1
|
|
network_configuration:
|
|
subnets:
|
|
- subnet-abcd1234
|
|
groups:
|
|
- sg-abcd1234
|
|
launch_type: FARGATE
|
|
state: present
|
|
<<: *aws_connection_info
|
|
register: ecs_service_creation_vpc_launchtype
|
|
ignore_errors: yes
|
|
|
|
- name: check that graceful failure message is returned from ecs_service
|
|
assert:
|
|
that:
|
|
- ecs_service_creation_vpc_launchtype.failed
|
|
- 'ecs_service_creation_vpc_launchtype.msg == "botocore needs to be version 1.7.44 or higher to use network configuration"'
|
|
|
|
- name: create ecs_service with launchtype and missing network_configuration
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}-vpc"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}-vpc"
|
|
desired_count: 1
|
|
launch_type: FARGATE
|
|
state: present
|
|
<<: *aws_connection_info
|
|
register: ecs_service_creation_vpc_launchtype_nonet
|
|
ignore_errors: yes
|
|
|
|
- name: check that graceful failure message is returned from ecs_service
|
|
assert:
|
|
that:
|
|
- ecs_service_creation_vpc_launchtype_nonet.failed
|
|
- 'ecs_service_creation_vpc_launchtype_nonet.msg == "launch_type is FARGATE but all of the following are missing: network_configuration"'
|
|
|
|
- name: create ecs_task using awsvpc network_configuration
|
|
ecs_task:
|
|
cluster: "{{ resource_prefix }}-vpc"
|
|
task_definition: "{{ resource_prefix }}"
|
|
operation: run
|
|
count: 1
|
|
started_by: me
|
|
network_configuration:
|
|
subnets:
|
|
- subnet-abcd1234
|
|
groups:
|
|
- sg-abcd1234
|
|
<<: *aws_connection_info
|
|
register: ecs_task_creation_vpc
|
|
ignore_errors: yes
|
|
|
|
- name: check that graceful failure message is returned from ecs_task
|
|
assert:
|
|
that:
|
|
- ecs_task_creation_vpc.failed
|
|
- 'ecs_task_creation_vpc.msg == "botocore needs to be version 1.7.44 or higher to use network configuration"'
|
|
|
|
|
|
always:
|
|
- name: scale down ecs service
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}"
|
|
desired_count: 0
|
|
state: present
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|
|
|
|
- name: pause to wait for scale down
|
|
pause:
|
|
seconds: 30
|
|
|
|
- name: remove ecs service
|
|
ecs_service:
|
|
name: "{{ resource_prefix }}"
|
|
cluster: "{{ resource_prefix }}"
|
|
task_definition: "{{ resource_prefix }}"
|
|
desired_count: 1
|
|
state: absent
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|
|
|
|
- name: remove ecs task definition
|
|
ecs_taskdefinition:
|
|
containers:
|
|
- name: my_container
|
|
image: ubuntu
|
|
memory: 128
|
|
family: "{{ resource_prefix }}"
|
|
revision: "{{ ecs_taskdefinition_creation.taskdefinition.revision }}"
|
|
state: absent
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|
|
|
|
- name: remove ecs task definition vpc
|
|
ecs_taskdefinition:
|
|
containers:
|
|
- name: my_container
|
|
image: ubuntu
|
|
memory: 128
|
|
family: "{{ resource_prefix }}-vpc"
|
|
revision: "{{ ecs_taskdefinition_creation_vpc.taskdefinition.revision }}"
|
|
state: absent
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|
|
|
|
- name: remove ecs cluster
|
|
ecs_cluster:
|
|
name: "{{ resource_prefix }}"
|
|
state: absent
|
|
<<: *aws_connection_info
|
|
ignore_errors: yes
|