ansible: ec2_asg 模块创建额外的实例

ansible: ec2_asg module creates extra instance

我正在使用以下任务创建一个 aws 自动缩放组。

- name: Create auto scaling group
  ec2_asg:
    name: "{{ els_aws_asg_name }}"
    launch_config_name: "{{ rv_ec2_lc.result.launch_configuration_name }}"
    region: "{{ VPC_REGION }}"
    min_size: 1
    max_size: 5
    desired_capacity: 1
    vpc_zone_identifier: "{{ els_aws_private_vpc_subnets[0] }}"
    load_balancers: "{{ rv_ec2_elb.elb.name }}"
    notification_topic: "{{ els_aws_sns_admin }}"
    replace_all_instances: yes 
    tags:
      - Name: "{{ els_aws_asg_name }}"

然而,虽然 desired_capacity 设置为 1,完成后我看到 2 运行 ec2 实例。

在运行任务之前,还有1个实例(所以具体任务其实是一个)。

为什么会这样?

更新:

进一步调查发现,在 aws 控制台中检查时,一个实例似乎附加在特定的 Auto Scaling 组中。所以上面的行为是有道理的。

当我终止似乎附加到 asg 的实例时,asg 会启动一个新实例。

当我终止 other 实例时,asg 不采取任何行动。

现在的问题是如何在 asg 中附加一个 现有的 实例,因为 ec2_asg 似乎没有提供这样的功能。

Ansible 无法将现有实例附加到 ASG。唯一的方法是使用 AWS 控制台或 CLI,这还不错,因为您只会这样做一次。

参见:Attach EC2 Instances to Your Auto Scaling Group