我正在aws_launch_configuration使用terraform 启动一个实例.
我正在为user_data变量使用shell脚本,如下所示:
resource "aws_launch_configuration" "launch_config" {
...
user_data = "${file("router-init.sh")}"
....
}
Run Code Online (Sandbox Code Playgroud)
在这个router-init.sh中,我想做的事情之一是访问我通过terraform启动的其他实例的ip地址.
我知道我可以使用splat访问该实例的所有IP地址,例如:
output ip_address {
value = ${aws_instance.myAWSInstance.*.private_ip}"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在router-init.sh脚本中传递/访问这些IP地址?
我已经成功使用Terraform创建了一个自动缩放组。我现在想找到一种基于索引值动态命名已配置实例的方法。
对于aws_instance类型,可以通过以下方法轻松完成:
resource "aws_instance" "bar" {
count = 3
tags {
Name = "${var.instance_name_gridNode}${count.index + 1}"
App-code = "${var.app-code}"
PC-code = "${var.pc-code}"
}
}
Run Code Online (Sandbox Code Playgroud)
这将导致3个实例名为:
1)节点1
2)Node2
3)节点3
但是,正如aws_autoscaling_group动态预配的(对于放大和缩小情况),如何控制预配实例的命名约定?
resource "aws_autoscaling_group" "gridrouter_asg" {
name = "mygridrouter"
launch_configuration = "${aws_launch_configuration.gridGgr_lcfg.id}"
min_size = 1
max_size = 2
health_check_grace_period = 150
desired_capacity = 1
vpc_zone_identifier = ["${var.subnet_id}"]
health_check_type = "EC2"
tags = [
{
key = "Name"
value = "${var.instance_name_gridGgr_auto}"
propagate_at_launch = true
},
]
}
Run Code Online (Sandbox Code Playgroud)