Я начинаю с Terraform. Я пытаюсь установить понятное имя хоста вместо обычного ip-10.10.10.10
, которое использует AWS. Однако я не нашел, как это сделать.
Я пробовал использовать средства обеспечения, например:
provisioner "local-exec" {
command = "sudo hostnamectl set-hostname friendly.example.com"
}
Но это не работает, имя хоста не меняется.
Итак, теперь я пробую это:
resource "aws_instance" "example" {
ami = "ami-XXXXXXXX"
instance_type = "t2.micro"
tags = {
Name = "friendly.example.com"
}
user_data = "${data.template_file.user_data.rendered}"
}
data "template_file" "user_data" {
template = "${file("user-data.conf")}"
vars {
hostname = "${aws_instance.example.tags.Name}"
}
}
И в user-data.conf
у меня есть строка для использования переменной, например:
hostname = ${hostname}
Но это дает мне зависимость от цикла:
$ terraform apply
Error: Error asking for user input: 1 error(s) occurred:
* Cycle: aws_instance.example, data.template_file.user_data
Кроме того, это будет означать, что мне придется создавать разные user_data
ресурсы для каждого экземпляра, что немного похоже на боль. Вы не можете использовать их повторно? Это должно быть целью шаблонов, верно?
Должно быть, я что-то упускаю, но не могу найти ответа. Спасибо.
local-exec
выполняется на вашем локальном устройстве. Вы хотитеremote-exec
. - person Matt Schuchard   schedule 23.01.2019