运行指定Ansible命令后,Auto Scaling Group内EC2未关联Target Group问题
问题场景
执行下方Ansible Playbook创建Auto Scaling Group(ASG)后,控制台显示ASG的Target Group配置无误,但所有EC2实例都未被分配到对应Target Group。只有手动在控制台解绑并重新关联Target Group后,新启动的EC2实例才会正常加入该组。
原Playbook代码:
- name: Create Auto Scaling Group amazon.aws.autoscaling_group: name: "asg" launch_template: launch_template_name: "launch-template" health_check_period: 60 health_check_type: ELB replace_all_instances: true min_size: 1 max_size: 3 desired_capacity: 2 region: us-east-1 replace_all_instances: true target_group_arns: "{{ target_group.target_group_arn }}" vpc_zone_identifier: ["{{ private_subnet_info1.subnets[0].subnet_id }}", "{{ private_subnet_info2.subnets[0].subnet_id }}"] wait_for_instances: false wait_timeout: 1800
问题原因
target_group_arns参数格式错误:该参数要求传入列表类型,但当前代码直接传入了字符串值。Ansible模块处理字符串类型的该参数时,会导致ASG与Target Group的关联逻辑未正确触发实例自动注册流程。- 重复声明参数:代码中两次设置
replace_all_instances: true,虽不触发语法错误,但可能造成模块处理逻辑歧义。
修复方案
调整target_group_arns为列表格式,并移除重复的参数声明:
- name: Create Auto Scaling Group amazon.aws.autoscaling_group: name: "asg" launch_template: launch_template_name: "launch-template" health_check_period: 60 health_check_type: ELB replace_all_instances: true min_size: 1 max_size: 3 desired_capacity: 2 region: us-east-1 target_group_arns: ["{{ target_group.target_group_arn }}"] vpc_zone_identifier: ["{{ private_subnet_info1.subnets[0].subnet_id }}", "{{ private_subnet_info2.subnets[0].subnet_id }}"] wait_for_instances: false wait_timeout: 1800
验证步骤
- 运行修复后的Playbook,重新创建或更新ASG
- 检查EC2实例是否自动注册到Target Group
- 调整ASG的
desired_capacity触发扩容,确认新实例正常加入Target Group
内容的提问来源于stack exchange,提问作者Andrew Burger
相关产品推荐
相关产品推荐

