Я начинаю с 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
ресурсы для каждого экземпляра, что немного похоже на боль.Вы не можете использовать их повторно?Это должно быть целью шаблонов, верно?
Я должен что-то упустить, но не могу найти ответ.Спасибо.