首页 > 解决方案 > 如何在 Ansible Playbook 中遍历 AWS Auto Scaling 组的实例 ID?

问题描述

我正在尝试将 Bash 脚本转换为 Ansible Playbook。在 bash 脚本中,我正在遍历 ASG 中存在的不同实例 ID,并在循环内执行一些操作。

现在我必须将其转换为 Ansible Playbook。我该如何执行此任务?我知道任务中的循环选项,但没有传递列表的选项。通常,我看到迭代是硬编码的。

我的 bash 脚本:

for InstanceID in `/usr/local/bin/aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name $ASG_NAME --query "AutoScalingGroups[].Instances[?LaunchConfigurationName=='$NEW_LC'].InstanceId"`
        do
                while [ 1 ]
                do
        if [ $GRACE_TIME -le $MAX_GRACE_PERIOD ];then
        STATUS=$( /usr/local/bin/aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names $ASG_NAME --query "AutoScalingGroups[].Instances[?InstanceId=='$InstanceID'].LifecycleState" )
                        if [ $STATUS == "InService" ];then
                           echo "$InstanceID status of LifecycleState is healthy"
                                ELB_STATUS=$( /usr/local/bin/aws elbv2 describe-target-health  --target-group-arn ${TargetGroupARN[0]} --targets Id=$InstanceID,Port=8080 --query 'TargetHealthDescriptions[].TargetHealth[].State' )
                           if [ $ELB_STATUS == "healthy" ];then
                              echo "$InstanceID status for ALB target group is healthy"
                              break
                           else
                              sleep 10
                           GRACE_TIME=`expr $GRACE_TIME + 10`
                           fi
                        else
                           sleep 10
                           GRACE_TIME=`expr $GRACE_TIME + 10`
                        fi
done
done

标签: amazon-web-servicesloopsansibleaws-asg

解决方案


推荐阅读