Terraforms Remote-Exec на каждом созданном хосте - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь настроить группу EC2 для приложения, использующего Terraform в AWS. После создания каждого сервера я хочу смонтировать хранилище экземпляров eNVM на каждом сервере, используя remote-exec. Поэтому создайте 3 сервера, а затем подключите eNVM на каждом из 3 серверов

.

попытался использовать null_resource, но я получаю сообщения об ошибках "ресурс зависит от несуществующего ресурса" или "интерполяции"

variable count {
  default = 3
}

module "app-data-node" {
  source           = "some_git_source"
  count            = "${var.count}"
  instance_size    = "instance_data"
  hostname_pattern = "app-data"
  dns_domain       = "${data.terraform_remote_state.network.dns_domain}"
  key_name         = "app-automation"
  description      = "Automation App Data Instance"
  package_proxy    = "${var.package_proxy}"
}

resource "null_resource" "mount_envm" {
  # Only run this provisioner for app nodes
  #count = "${var.count}"

  depends_on = [
    "null_resource.${module.app-data-node}"
  ]

  connection {
  host        = "${aws_instance.i.*.private_ip[count.index]}"
  user        = "root"
  private_key = "app-automation"
}

provisioner "remote-exec" {
  inline = [
    "sudo mkfs -t ext4 /dev/nvme0n1",
    "sudo mkdir /data",
    "sudo mount /dev/nvme0n1 /data"
  ]
 }
}

3 экземпляра EC2 каждый с установленными eNVM.

1 Ответ

0 голосов
/ 08 мая 2019

Вы можете использовать null_resource для запуска провайдера:

resource "null_resource" "provisioner" {
  count = "${var.count}"

  triggers {
    master_id = "${element(aws_instance.my_instances.*.id, count.index)}"
  }

  connection {
    #host        = "${element(aws_instance.my_instances.*.private_ip, count.index)}"
    host        = "${element(aws_instance.my_instances.*.private_ip, count.index)}"
    type        = "ssh"
    user        = "..."
    private_key = "..."
  }

  # set hostname
  provisioner "remote-exec" {
    inline = [
      "sudo mkfs -t ext4 /dev/nvme0n1",
      "sudo mkdir /data",
      "sudo mount /dev/nvme0n1 /data"
    ]
  }
}

Это должно быть сделано для всех экземпляров одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...