Add new parameters to taskdefinition module - network_mode and task_r… (#19493)
* Add new parameters to taskdefinition module - network_mode and task_role_arn * Add version_added field for doco * Change version_added parameter to 2.3
This commit is contained in:
parent
a080d44a47
commit
cfa8ce767b
1 changed files with 30 additions and 7 deletions
|
@ -51,6 +51,18 @@ options:
|
|||
- A list of containers definitions
|
||||
required: False
|
||||
type: list of dicts with container definitions
|
||||
network_mode:
|
||||
description:
|
||||
- The Docker networking mode to use for the containers in the task.
|
||||
required: false
|
||||
default: bridge
|
||||
choices: [ 'bridge', 'host', 'none' ]
|
||||
version_added: 2.3
|
||||
task_role_arn:
|
||||
description:
|
||||
- The Amazon Resource Name (ARN) of the IAM role that containers in this task can assume. All containers in this task are granted the permissions that are specified in this role.
|
||||
required: false
|
||||
version_added: 2.3
|
||||
volumes:
|
||||
description:
|
||||
- A list of names of volumes to be attached
|
||||
|
@ -137,7 +149,7 @@ class EcsTaskManager:
|
|||
except botocore.exceptions.ClientError:
|
||||
return None
|
||||
|
||||
def register_task(self, family, container_definitions, volumes):
|
||||
def register_task(self, family, task_role_arn, network_mode, container_definitions, volumes):
|
||||
validated_containers = []
|
||||
|
||||
# Ensures the number parameters are int as required by boto
|
||||
|
@ -154,8 +166,15 @@ class EcsTaskManager:
|
|||
|
||||
validated_containers.append(container)
|
||||
|
||||
response = self.ecs.register_task_definition(family=family,
|
||||
containerDefinitions=validated_containers, volumes=volumes)
|
||||
try:
|
||||
response = self.ecs.register_task_definition(family=family,
|
||||
taskRoleArn=task_role_arn,
|
||||
networkMode=network_mode,
|
||||
containerDefinitions=container_definitions,
|
||||
volumes=volumes)
|
||||
except botocore.exceptions.ClientError as e:
|
||||
self.module.fail_json(msg=e.message, **camel_dict_to_snake_dict(e.response))
|
||||
|
||||
return response['taskDefinition']
|
||||
|
||||
def describe_task_definitions(self, family):
|
||||
|
@ -189,6 +208,7 @@ class EcsTaskManager:
|
|||
response = self.ecs.deregister_task_definition(taskDefinition=taskArn)
|
||||
return response['taskDefinition']
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
argument_spec = ec2_argument_spec()
|
||||
|
@ -198,8 +218,9 @@ def main():
|
|||
family=dict(required=False, type='str'),
|
||||
revision=dict(required=False, type='int'),
|
||||
containers=dict(required=False, type='list'),
|
||||
volumes=dict(required=False, type='list')
|
||||
))
|
||||
network_mode=dict(required=False, default='bridge', choices=['bridge', 'host', 'none'], type='str'),
|
||||
task_role_arn=dict(required=False, default='', type='str'),
|
||||
volumes=dict(required=False, type='list')))
|
||||
|
||||
module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)
|
||||
|
||||
|
@ -325,7 +346,10 @@ def main():
|
|||
# Doesn't exist. create it.
|
||||
volumes = module.params.get('volumes', []) or []
|
||||
results['taskdefinition'] = task_mgr.register_task(module.params['family'],
|
||||
module.params['containers'], volumes)
|
||||
module.params['task_role_arn'],
|
||||
module.params['network_mode'],
|
||||
module.params['containers'],
|
||||
volumes)
|
||||
results['changed'] = True
|
||||
|
||||
elif module.params['state'] == 'absent':
|
||||
|
@ -355,6 +379,5 @@ def main():
|
|||
|
||||
module.exit_json(**results)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue