为Terraform aws_autoscaling_group模块的每个实例设置唯一标记

时间:2017-06-17 21:36:25

标签: amazon-web-services terraform

可以为Terraform的aws_autoscaling_group模块创建的每个EC2实例分配不同的标记值。例如,node1,node2,node3和node4用于4个实例的ASG。

感谢。

1 个答案:

答案 0 :(得分:2)

AWS中的自动调节组只能(可选)将ASG的标签传播到它创建的实例。它不能根据ASG中的实例数进行任何动态标记。

如果你真的需要这个,那么你必须让实例的用户数据执行一些计算名称标签应该是什么的步骤,然后自我修复(当然实例必须有相关的IAM)对此的权限。)

对于一个实例来计算它在ASG中的数字可能会很棘手(考虑一下你的自动调节操作是同时添加多个实例还是足够快以至于某些实例可能在创建另一个实例之前没有重新标记)但你可以更容易让它找到自己的实例ID并使用它来创建一个唯一的标记名称,如果它更符合您的要求。

在这种情况下,这样的事情可能会有用:

ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
CURRENT_NAME=$(aws ec2 describe-tags --filters Name=resource-id,Values=${ID} Name=key,Values=Name --query Tags[].Value --output text
NEW_NAME=${CURRENT_NAME}-${ID}

aws ec2 create-tags --resources ${ID} --tags Key=Name,Value=${NEW_NAME}