генерировать user_data, включая «IP Address» при создании экземпляра ec2 с использованием terraform - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь раскрутить 2 ec2 экземпляров, используя terraform.Примерно так:

resource "aws_instance" "example" {
  count                       = "${var.number_of_instances}"
  ami                         = "${var.ami_name}"
  associate_public_ip_address = "${var.associate_public_ip_address}"
  instance_type               = "${var.instance_type}"
  key_name                    = "${var.keyname}"
  subnet_id                   = "${element(var.subnet_ids, count.index)}"
  user_data                   = "${element(data.template_file.example.*.rendered, count.index)}"
  vpc_security_group_ids      = ["${aws_security_group.example.id}","${var.extra_security_group_id}"]
  root_block_device {
    volume_size = "${var.root_volume_size}"
    volume_type = "${var.root_volume_type}"
    iops        = "${var.root_volume_iops}"
  }
  tags {
    Name      = "${var.prefix}${var.name}${format("%02d", count.index + 1)}"
  }
}

В template_file все, что я пытаюсь сделать, - это сгенерировать файл конфигурации с IP Address для обоих экземпляров, используя user_data, но это не дает сказать Cycle Error.

Есть ли способ заставить файл сгенерировать с помощью IP Address, пока появляются экземпляры ec2

1 Ответ

0 голосов
/ 15 апреля 2019

Используйте конечную точку метаданных экземпляра AWS в своем сценарии пользовательских данных, чтобы получить IP-адрес каждого экземпляра и поместить его в файл конфигурации. Вот пример Powershell сценария userdata:

<powershell>
$HostIp = (Invoke-RestMethod -URI 'http://169.254.169.254/latest/meta-data/local-ipv4' -UseBasicParsing)
Add-Content "C:\installer\config.txt" "HostIp:$HostIp"
</powershell>

Вы также можете получить экземпляр public-ipv4, если хотите, вместо этого.

...