amazon.aws.autoscaling_group 模块 – 创建或删除 AWS 自动伸缩组 (ASG)
注意
此模块是 amazon.aws 集合 (版本 9.0.0) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装它,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install amazon.aws
。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:amazon.aws.autoscaling_group
。
amazon.aws 5.0.0 中的新增功能
概要
可以创建或删除 AWS 自动伸缩组。
可以与 community.aws.autoscaling_launch_config 模块一起使用以管理启动配置。
在 5.0.0 版本之前,此模块称为 community.aws.ec2_asg。用法没有改变。
此模块最初添加到
community.aws
的 1.0.0 版本中。
别名:ec2_asg
要求
执行此模块的主机需要以下要求。
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 botocore SDK 保持一致,aws_access_key_id 别名是在 5.1.0 版本中添加的。 ec2_access_key 别名已被弃用,将在 2024-12-01 之后的一个版本中删除。
|
|
要创建组的可用区名称列表。 如果未设置 |
|
验证 SSL 证书时要使用的 CA 证书包的位置。 也可以使用 |
|
用于修改 botocore 配置的字典。 可以在 AWS 文档中找到参数 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config。 |
|
使用 也可以使用 选项
|
|
指示自动伸缩组是否根据分离的实例数量递减所需容量值。 选项
|
|
缩放活动完成后的秒数,之后才能开始另一个活动。 默认值: |
|
组中所需的实例数量,如果未指定,则使用当前组值。 |
|
从指定的自动伸缩组中移除一个或多个实例。 如果未设置 如果经典负载均衡器附加到自动伸缩组,则实例也会从负载均衡器中注销。 如果目标组附加到自动伸缩组,则实例也会从目标组中注销。 默认值: |
|
连接到的 URL,而不是默认的 AWS 端点。虽然这可以用于连接到其他与 AWS 兼容的服务,但 amazon.aws 和 community.aws 集合仅针对 AWS 进行了测试。 也可以使用 ec2_url 和 s3_url 别名已弃用,将在 2024-12-01 之后的一个版本中移除。 对环境变量 |
|
新的 EC2 实例投入使用后,自动伸缩开始检查其运行状况所需的时间(以秒为单位)。 默认值: |
|
您想要获取运行状况状态的服务,Amazon EC2 或 Elastic Load Balancer。 选项
|
|
要用于该组的启动配置的名称。有关管理这些配置的信息,请参阅 community.aws.autoscaling_launch_config 模块。 如果未指定,则将使用当前组的值。必须提供 |
|
描述要使用的启动模板的字典。 |
|
启动模板的 ID。只需要 |
|
启动模板的名称。只需要 |
|
要使用的启动模板的版本号。 如果未提供,则默认为最新版本。 |
|
要用于该组的 ELB 名称列表。用于经典负载均衡器。 |
|
检查以确保正在使用 选项
|
|
实例可以运行的最长时间(以秒为单位)。 最大实例生命周期必须等于 值为 |
|
组中的最大实例数,如果未指定,则将使用当前组的值。 |
|
启用 ASG 指标收集。 选项
|
|
当 默认值: |
|
当 默认值: |
|
组中的最小实例数,如果未指定,则将使用当前组的值。 |
|
要用于 ASG 的混合实例策略。 仅当 ASG 配置为使用启动模板 ( |
|
实例类型的列表。 |
|
指定按需实例和竞价实例的分配方式、为竞价实例支付的最大价格以及自动伸缩组如何分配实例类型以满足按需和竞价容量。 另请参阅 https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstancesDistribution.html |
|
指示如何分配实例类型以满足按需容量。 |
|
必须由按需实例满足的自动伸缩组容量的最小数量。此基本部分将在您的组进行扩展时首先进行预配。 如果未设置,则默认为 |
|
控制超出 如果未设置,则默认为 有效范围: |
|
指示如何在竞价实例池中分配实例。 |
|
要跨其分配竞价实例的竞价实例池的数量。竞价实例池由 LaunchTemplate 的 Overrides 数组中的不同实例类型确定。如果未设置,则默认为 仅当竞价分配策略为最低价格时才使用。 有效范围:最小值为 |
|
您愿意为竞价实例支付的每单位小时的最大价格。 如果您留空此参数的值(这是默认值),则最大竞价价格将设置为按需价格。 要移除以前设置的值,请包含该参数但留空其值。 |
|
要创建或删除的组的唯一名称。 |
|
用于发送自动伸缩通知的 SNS 主题 ARN。 |
|
触发通知的自动伸缩事件列表。 默认值: |
|
您在 Amazon EC2 中创建的集群放置组的物理位置。 |
|
用于身份验证的命名 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。
对 |
|
以滚动方式替换所有使用旧启动配置的实例,使用新的启动配置中的实例替换。它会将 ASG 大小增加 选项
|
|
一次要替换的实例数量。与 默认值: |
|
要终止并替换为与当前启动配置匹配的实例的指定 AutoScalingGroup 的实例 ID 列表。 默认值: |
|
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 之后发布的版本中移除。 对 |
|
注册或注销实例。 选项
|
|
要暂停的扩展过程列表。 有效值包括:
可以在 AWS 文档中找到有效值的完整文档 https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-suspend-resume-processes.html 默认值: |
|
要添加到自动扩展组的标签列表。 可选键是 当 默认值: |
|
要用于组的目标组 ARN 列表。用于应用程序负载均衡器。 |
|
用于在减少容量时选择要从自动扩展组中移除的实例的条件的有序列表。 修改现有 AutoScalingGroup 时使用 有效值包括: 可以在 AWS 文档中找到有效值的完整文档 默认值: |
|
设置为 强烈建议不要设置validate_certs=false,作为替代方案,请考虑设置aws_ca_bundle。 选项
|
|
要使用的 VPC 子网列表 |
|
等待 ASG 实例处于就绪状态后再退出。如果实例位于 ELB 后面,它将等待 ELB 确定所有实例的 lifecycle_state 为“InService”并且 health_status 为“Healthy”。 选项
|
|
等待替换的实例变得可用所需的时间。如果您遇到错误“等待 ELB 实例变为健康状态的时间过长”,请尝试增加此值。 默认值: |
注释
注意
警告:对于模块,环境变量和配置文件是从 Ansible 的“主机”上下文而不是“控制器”上下文读取的。因此,可能需要将文件显式复制到“主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible 的“控制器”上下文而不是“主机”上下文读取的。
Ansible 使用的 AWS SDK (boto3) 也可能从 Ansible“主机”上下文中的配置文件(通常为
~/.aws/credentials
)读取凭据和其他设置(例如区域)的默认值。更多信息,请参见 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html。
示例
# Basic configuration with Launch Configuration
- amazon.aws.autoscaling_group:
name: special
load_balancers: ['lb1', 'lb2']
availability_zones: ['eu-west-1a', 'eu-west-1b']
launch_config_name: 'lc-1'
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: ['subnet-abcd1234', 'subnet-1a2b3c4d']
tags:
- environment: production
propagate_at_launch: false
# Rolling ASG Updates
# Below is an example of how to assign a new launch config to an ASG and terminate old instances.
#
# All instances in "myasg" that do not have the launch configuration named "my_new_lc" will be terminated in
# a rolling fashion with instances using the current launch configuration, "my_new_lc".
#
# This could also be considered a rolling deploy of a pre-baked AMI.
#
# If this is a newly created group, the instances will not be replaced since all instances
# will have the current launch configuration.
- name: create launch config
community.aws.autoscaling_launch_config:
name: my_new_lc
image_id: ami-lkajsf
key_name: mykey
region: us-east-1
security_groups: sg-23423
instance_type: m1.small
assign_public_ip: true
- amazon.aws.autoscaling_group:
name: myasg
launch_config_name: my_new_lc
health_check_period: 60
health_check_type: ELB
replace_all_instances: true
min_size: 5
max_size: 5
desired_capacity: 5
region: us-east-1
# To only replace a couple of instances instead of all of them, supply a list
# to "replace_instances":
- amazon.aws.autoscaling_group:
name: myasg
launch_config_name: my_new_lc
health_check_period: 60
health_check_type: ELB
replace_instances:
- i-b345231
- i-24c2931
min_size: 5
max_size: 5
desired_capacity: 5
region: us-east-1
# Basic Configuration with Launch Template
- amazon.aws.autoscaling_group:
name: special
load_balancers: ['lb1', 'lb2']
availability_zones: ['eu-west-1a', 'eu-west-1b']
launch_template:
version: '1'
launch_template_name: 'lt-example'
launch_template_id: 'lt-123456'
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: ['subnet-abcd1234', 'subnet-1a2b3c4d']
tags:
- environment: production
propagate_at_launch: false
# Basic Configuration with Launch Template using mixed instance policy
- amazon.aws.autoscaling_group:
name: special
load_balancers: ['lb1', 'lb2']
availability_zones: ['eu-west-1a', 'eu-west-1b']
launch_template:
version: '1'
launch_template_name: 'lt-example'
launch_template_id: 'lt-123456'
mixed_instances_policy:
instance_types:
- t3a.large
- t3.large
- t2.large
instances_distribution:
on_demand_percentage_above_base_capacity: 0
spot_allocation_strategy: capacity-optimized
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: ['subnet-abcd1234', 'subnet-1a2b3c4d']
tags:
- environment: production
propagate_at_launch: false
返回值
公共返回值已在此处记录 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
自动扩展组的唯一 ARN 已返回:成功 示例: |
|
自动扩展组的唯一名称 已返回:成功 示例: |
|
自动扩展组的可用区 已返回:成功 示例: |
|
自动扩展组创建时间戳 已返回:成功 示例: |
|
默认冷却时间(秒)。 已返回:成功 示例: |
|
在此组中应运行的 EC2 实例数。 已返回:成功 示例: |
|
新的 EC2 实例投入使用后,自动伸缩开始检查其运行状况所需的时间(以秒为单位)。 已返回:成功 示例: |
|
您想要获取健康状态的服务,“EC2”或“ELB”之一。 已返回:成功 示例: |
|
处于健康状态的实例数 已返回:成功 示例: |
|
正在服务的实例数 已返回:成功 示例: |
|
EC2 实例及其与 ASG 相关的状态的字典。 已返回:成功 示例: |
|
ASG 中实例 ID 列表 已返回:成功 示例: |
|
与 ASG 关联的启动配置的名称。与 launch_configuration_name 相同,为与 amazon.aws.autoscaling_group 模块兼容而提供。 已返回:成功 示例: |
|
附加到 ASG 的负载均衡器名称列表。 已返回:成功 示例: |
|
实例可以运行的最长时间(以秒为单位)。 已返回:成功 示例: |
|
组的最大大小 已返回:成功 示例: |
|
已启用的 AutosSalingGroup 指标列表 已返回:成功 示例: |
|
组的最小大小 已返回:成功 示例: |
|
如果设置了混合实例策略,则返回实例类型列表。 已返回:成功 示例: |
|
如果设置了混合实例策略,则返回混合实例策略的完整字典表示。 已返回:成功 示例: |
|
处于待处理状态的实例数量 已返回:成功 示例: |
|
ASG 的标签列表,以及每个标签是否在启动时传播到实例。 已返回:成功 示例: |
|
ASG填充的目标组的ARN列表 已返回:成功 示例: |
|
ASG填充的目标组名称列表 已返回:成功 示例: |
|
组的终止策略列表。 已返回:成功 示例: |
|
处于不健康状态的实例数量 已返回:成功 示例: |
|
处于可用状态的实例数量 已返回:成功 示例: |
|
自动缩放组的 VPC 区域 ID/子网 ID 已返回:成功 示例: |