小编Tim*_* T.的帖子

访问user_data提供程序模板文件中的Terraform变量

我正在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地址?

amazon-web-services terraform

10
推荐指数
3
解决办法
4590
查看次数

Terraform aws_autoscaling_group启动的AWS EC2实例的动态命名

我已经成功使用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)

amazon-web-services autoscaling terraform

4
推荐指数
1
解决办法
1938
查看次数