community.aws.ecs_taskdefinition 模块 – 在 ECS 中注册任务定义
注意
此模块是 community.aws 集合 (版本 9.0.0) 的一部分。
如果您正在使用 ansible
包,则您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.aws
。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 playbook 中使用它,请指定:community.aws.ecs_taskdefinition
。
community.aws 1.0.0 中的新增功能
概要
在 Amazon Web Services (AWS) EC2 Container Service (ECS) 中注册或注销任务定义。
要求
执行此模块的主机需要以下要求。
python >= 3.6
boto3 >= 1.28.0
botocore >= 1.31.0
参数
参数 |
注释 |
---|---|
AWS 访问密钥 ID。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 还可以按优先级递减的顺序使用 aws_access_key 和 profile 选项是互斥的。 aws_access_key_id 别名在 5.1.0 版本中添加,以与 AWS botocore SDK 保持一致。 ec2_access_key 别名已被弃用,并将在 2024-12-01 之后的版本中删除。
|
|
要删除的任务描述的 ARN。 |
|
验证 SSL 证书时要使用的 CA 证书包的位置。 也可以使用 |
|
用于修改 botocore 配置的字典。 参数可以在 AWS 文档中找到 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config。 |
|
容器定义列表。 有关参数的完整列表,请参阅 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ecs.html。 |
|
传递给容器的命令。如果有多个参数,则每个参数都是数组中一个单独的字符串。 |
|
为容器保留的 CPU 单位数。 |
|
为容器启动和关闭定义的依赖项。 为容器启动定义依赖项时,为容器关闭反转依赖项。 |
|
容器的依赖条件。 选项
|
|
容器的名称。 |
|
当此参数为 选项
|
|
呈现给容器的 DNS 搜索域列表。 此参数不支持 Windows 容器。 |
|
呈现给容器的 DNS 服务器列表。 此参数不支持 Windows 容器。 |
|
要添加到容器的键/值标签映射。 |
|
用于为 SELinux 和 AppArmor 多级安全系统提供自定义标签的字符串列表。 此参数不支持 Windows 容器。 |
|
传递给容器的入口点。 |
|
要传递给容器的环境变量。 |
|
键值对的名称。 |
|
键值对的值。 |
|
包含要传递给容器的环境变量的文件列表。 |
|
要使用的文件类型。唯一支持的值是 |
|
包含环境变量文件的 Amazon S3 对象的 Amazon 资源名称 (ARN)。 |
|
如果 essential=True,并且容器由于任何原因失败或停止,则任务中的所有其他容器都将停止。 选项
|
|
要附加到容器上 /etc/hosts 文件的主机名和 IP 地址映射列表。 此参数不支持使用 network_mode=awsvpc 的 Windows 容器或任务。 |
|
要在 /etc/hosts 条目中使用的主机名。 |
|
要在 /etc/hosts 条目中使用的 IP 地址。 |
|
容器的 FireLens 配置。 这用于指定和配置容器日志的日志路由器。 |
|
配置日志路由器时可用的选项。 此字段是可选的,可用于指定自定义配置文件,或添加其他元数据,例如任务、任务定义、集群和容器实例详细信息到日志事件。 如果指定,则应使用以下语法: 更多信息,请参见 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-taskdef。 |
|
要使用的日志路由器。有效值为 选项
|
|
容器的健康检查命令和相关配置参数。 |
|
表示容器运行以确定其是否健康的命令的字符串数组。 字符串数组必须以 CMD 开头以直接运行命令参数,或以 CMD-SHELL 开头以使用容器的默认 shell 运行命令。 退出代码 0 表示成功,非零退出代码表示失败。 |
|
每次健康检查执行之间的时间段(以秒为单位)。 您可以指定 5 到 300 秒之间的时间。默认值为 30 秒。 默认值: |
|
在容器被认为不健康之前,重试失败健康检查的次数。 您可以指定 1 到 10 次重试。默认值为 3。 默认值: |
|
可选的宽限期,为容器提供启动时间,然后再将失败的健康检查计入最大重试次数。 您可以指定 0 到 300 秒之间的时间。默认情况下,startPeriod 已禁用。 注意:如果健康检查在 startPeriod 内成功,则容器被认为是健康的,任何后续失败都将计入最大重试次数。 |
|
等待健康检查成功之前将其视为失败的时间段(以秒为单位)。 您可以指定 2 到 60 秒之间的时间。默认值为 5。 默认值: |
|
要为您的容器使用的主机名。 如果 *network_mode=awsvpc*,则不支持此参数。 |
|
用于启动容器的镜像。 |
|
当 *interactive=True* 时,允许部署需要分配 stdin 或 tty 的容器化应用程序。 选项
|
|
允许容器相互通信,而无需端口映射。 仅当 *network_mode=bridge* 时才支持此参数。 |
|
应用于容器的 Linux 特定修改,例如 Linux 内核功能。 |
|
添加到或从 Docker 提供的默认配置中删除的容器的 Linux 功能。 |
|
已添加到 Docker 提供的默认配置的容器的 Linux 功能。 如果 *launch_type=FARGATE*,则不支持此参数。 选项
|
|
已从 Docker 提供的默认配置中删除的容器的 Linux 功能。 选项
|
|
要公开给容器的任何主机设备。 如果 *launch_type=FARGATE*,则不支持此参数。 |
|
在容器内公开主机设备的路径。 |
|
主机容器实例上设备的路径。 |
|
要为设备提供给容器的显式权限。 |
|
在容器内运行 init 进程,以转发信号和收集进程。 选项
|
|
容器可以使用交换内存的总量(以 MiB 为单位)。 如果 *launch_type=FARGATE*,则不支持此参数。 |
|
/dev/shm 卷的大小值(以 MiB 为单位)。 如果 *launch_type=FARGATE*,则不支持此参数。 |
|
这允许您调整容器的内存 swappiness 行为。 如果 *launch_type=FARGATE*,则不支持此参数。 |
|
tmpfs 挂载的容器路径、挂载选项和大小(以 MiB 为单位)。 如果 *launch_type=FARGATE*,则不支持此参数。 |
|
要挂载 tmpfs 卷的绝对文件路径。 |
|
tmpfs 卷挂载选项的列表。 选项
|
|
tmpfs 卷的大小(以 MiB 为单位)。 |
|
容器的日志配置规范。 |
|
要为容器使用的日志驱动程序。 对于 AWS Fargate 上的任务,支持的日志驱动程序为 对于在 Amazon EC2 实例上托管的任务,支持的日志驱动程序为 |
|
要提供给容器的内存量(以 MiB 为单位)。 |
|
为容器保留的内存软限制(以 MiB 为单位)。 |
|
容器中数据卷的挂载点。 |
|
在容器上挂载主机卷的路径。 |
|
如果此值为 如果此值为 选项
|
|
要挂载的卷的名称。 |
|
容器的名称。 |
|
要发送到日志驱动程序的配置选项。 |
|
容器的端口映射列表。 |
|
容器上绑定到用户指定或自动分配的主机端口的端口号。 |
|
要在容器实例上为您的容器保留的端口号。 |
|
用于端口映射的协议。 选项
|
|
当此参数为 选项
|
|
当此参数为 选项
|
|
当此参数为 选项
|
|
要使用的私有存储库身份验证凭据。 |
|
包含私有存储库凭据的密钥的 Amazon 资源名称 (ARN)。 |
|
要分配给容器的资源类型和数量。 唯一支持的资源是 |
|
要分配给容器的资源类型。 选项
|
|
指定资源类型的值。 |
|
要传递到日志配置的密钥。 |
|
密钥的名称。 |
|
要公开给容器的密钥。 |
|
要传递到容器的密钥。 |
|
要设置为容器上环境变量的值。 |
|
要公开给容器的密钥。 |
|
在放弃解决容器依赖项之前等待的时间长度(以秒为单位)。 |
|
如果容器没有自行正常退出,则在强制终止容器之前等待的时间长度(以秒为单位)。 |
|
要在容器中设置的命名空间内核参数列表。 |
|
要为其设置 |
|
在 |
|
要在容器中设置的 ulimits 列表。 此参数不支持 Windows 容器。 |
|
ulimit 类型的硬限制。 |
|
ulimit 的类型。 选项
|
|
ulimit 类型的软限制。 |
|
容器内使用的用户。 此参数不支持 Windows 容器。 |
|
要从另一个容器挂载的数据卷。 |
|
如果此值为 如果此值为 选项
|
|
要从中挂载卷的同一任务定义中的另一个容器的名称。 |
|
在容器内运行命令的工作目录。 |
|
任务使用的 CPU 单位数。如果 launch_type=EC2,则此字段是可选的,可以使用任何值。 如果 launch_type=FARGATE,则此字段是必需的,并且必须使用 |
|
使用 也可以使用 选项
|
|
用于连接到非默认 AWS 端点的 URL。虽然这可以用于连接到其他兼容 AWS 的服务,但 amazon.aws 和 community.aws 集合仅针对 AWS 进行了测试。 也可以使用 ec2_url 和 s3_url 别名已被弃用,并将在 2024-12-01 之后的一个版本中移除。 对 |
|
Amazon ECS 容器代理和 Docker 守护程序可以假定的任务执行角色的 Amazon 资源名称 (ARN)。 默认值: |
|
将赋予任务定义的名称。 |
|
始终创建新的任务定义。 选项
|
|
运行任务的启动类型。 选项
|
|
任务使用的内存量(以 MiB 为单位)。如果 launch_type=EC2,则此字段是可选的,可以使用任何值。 如果 launch_type=FARGATE,则此字段是必需的,并且受 CPU 限制。 |
|
要用于任务中容器的 Docker 网络模式。 Windows 容器必须使用 network_mode=default,这将使用 Docker NAT 网络。 为 Linux 容器设置 network_mode=default 将使用 选项
|
|
要用于任务的放置约束对象。 每个任务最多可以指定 10 个约束。 Fargate 上运行的任务不支持任务放置约束。 |
|
应用于约束的集群查询语言表达式。 |
|
约束的类型。 |
|
用于身份验证的命名 AWS 配置文件。 有关命名配置文件的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html。 也可以使用 profile 选项与 aws_access_key、aws_secret_key 和 security_token 选项互斥。 |
|
要使用的 AWS 区域。 对于 IAM、Route53 和 CloudFront 等全球服务,将忽略 region。 也可以使用 有关更多信息,请参阅 Amazon AWS 文档 http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region。 ec2_region 别名已被弃用,并将在 2024-12-01 之后的一个版本中移除。 对 |
|
任务定义的修订号。 |
|
任务的运行时平台配置 默认值: |
|
任务要使用的 CPU 架构类型 选项
|
|
任务要使用的操作系统类型 选项
|
|
AWS 密钥访问密钥。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 也可以使用 secret_key 和 profile 选项互斥。 为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_secret_access_key 别名。 ec2_secret_key 别名已被弃用,并将在 2024-12-01 之后的一个版本中移除。 对 |
|
与临时凭据一起使用的 AWS STS 会话令牌。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 也可以使用 security_token 和 profile 选项互斥。 在 3.2.0 版本中添加了 aws_session_token 和 session_token 别名,在 6.0.0 版本中将参数名称从 security_token 重命名为 session_token。 security_token、aws_security_token 和 access_token 别名已被弃用,并将在 2024-12-01 之后的一个版本中移除。 对 |
|
任务定义是否存在或是否应删除。 选项
|
|
此任务中的容器可以假定的 IAM 角色的 Amazon 资源名称 (ARN)。此任务中的所有容器都将被授予在此角色中指定的权限。 默认值: |
|
设置为 强烈建议不要设置 validate_certs=false,作为替代方法,请考虑改用 aws_ca_bundle。 选项
|
|
要附加的卷的名称列表。 |
|
卷的名称。 |
注释
注意
警告:对于模块,环境变量和配置文件是从 Ansible 的“主机”上下文而不是“控制器”上下文读取的。因此,可能需要将文件显式复制到“主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible 的“控制器”上下文而不是“主机”上下文读取的。
Ansible 使用的 AWS SDK (boto3) 也可能从 Ansible “主机”上下文中的配置文件(通常为
~/.aws/credentials
)读取凭据和其他设置(例如区域)的默认值。有关更多信息,请参阅 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html。
示例
- name: Create task definition
community.aws.ecs_taskdefinition:
containers:
- name: simple-app
cpu: 10
essential: true
image: "httpd:2.4"
memory: 300
mountPoints:
- containerPath: /usr/local/apache2/htdocs
sourceVolume: my-vol
portMappings:
- containerPort: 80
hostPort: 80
logConfiguration:
logDriver: awslogs
options:
awslogs-group: /ecs/test-cluster-taskdef
awslogs-region: us-west-2
awslogs-stream-prefix: ecs
- name: busybox
command:
- >
/bin/sh -c "while true; do echo '<html><head><title>Amazon ECS Sample App</title></head><body><div><h1>Amazon ECS Sample App</h1>
<h2>Congratulations!</h2>
<p>Your application is now running on a container in Amazon ECS.</p>' > top; /bin/date > date ; echo '</div></body></html>' > bottom;
cat top date bottom > /usr/local/apache2/htdocs/index.html ; sleep 1; done"
cpu: 10
entryPoint:
- sh
- "-c"
essential: false
image: busybox
memory: 200
volumesFrom:
- sourceContainer: simple-app
volumes:
- name: my-vol
family: test-cluster-taskdef
state: present
register: task_output
- name: Create task definition
community.aws.ecs_taskdefinition:
family: nginx
containers:
- name: nginx
essential: true
image: "nginx"
portMappings:
- containerPort: 8080
hostPort: 8080
cpu: 512
memory: 1024
state: present
- name: Create task definition
community.aws.ecs_taskdefinition:
family: nginx
containers:
- name: nginx
essential: true
image: "nginx"
portMappings:
- containerPort: 8080
hostPort: 8080
launch_type: FARGATE
cpu: 512
memory: 1024
state: present
network_mode: awsvpc
- name: Create task definition
community.aws.ecs_taskdefinition:
family: nginx
containers:
- name: nginx
essential: true
image: "nginx"
portMappings:
- containerPort: 8080
hostPort: 8080
cpu: 512
memory: 1024
dependsOn:
- containerName: "simple-app"
condition: "start"
# Create Task Definition with Environment Variables and Secrets
- name: Create task definition
community.aws.ecs_taskdefinition:
family: nginx
containers:
- name: nginx
essential: true
image: "nginx"
environment:
- name: "PORT"
value: "8080"
secrets:
# For variables stored in Secrets Manager
- name: "NGINX_HOST"
valueFrom: "arn:aws:secretsmanager:us-west-2:123456789012:secret:nginx/NGINX_HOST"
# For variables stored in Parameter Store
- name: "API_KEY"
valueFrom: "arn:aws:ssm:us-west-2:123456789012:parameter/nginx/API_KEY"
launch_type: FARGATE
cpu: 512
memory: 1GB
state: present
network_mode: awsvpc
# Create Task Definition with health check
- name: Create task definition
community.aws.ecs_taskdefinition:
family: nginx
containers:
- name: nginx
essential: true
image: "nginx"
portMappings:
- containerPort: 8080
hostPort: 8080
cpu: 512
memory: 1024
healthCheck:
command:
- CMD-SHELL
- /app/healthcheck.py
interval: 60
retries: 3
startPeriod: 15
timeout: 15
state: present
返回值
此处记录了常见的返回值 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
输入参数的反映 返回:始终 |