我正在尝试将 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