botiyava1
@botiyava1

Terraform не реагирует на изменение user_data. Что не так?

Есть обычный ec2 инстанс с user_data, который уже работает:
resource "aws_instance" "myWebServer" {
  ami                    = "ami-0c6ebbd55ab05f070" # Ubuntu Linux AMI
  instance_type          = "t2.micro"
  vpc_security_group_ids = [aws_security_group.webServerSG.id]
  user_data = templatefile("externalScripts/user_data.tpl", {
    name  = "Leo",
    names = ["Vasya", "Petya"]
  })

  tags = {
    Name = "myWebServer"
  }

Если добавить что-то в user_data, то при terraform plan вместо того, чтобы предложить удалить старый инстанс и заменить его на новый он предлагает сделать только 1 изменение - поменять хэш от user_data, т.к. он стал другой. В итоге после запуска он абсолютно ничего не изменит на самом сервере. в Чём может быть проблема? Если это может быть важно, то к этому инстансу еще привязан elastic ip
Пример добавления данных в user_data:
resource "aws_instance" "myWebServer" {
  ami                    = "ami-0c6ebbd55ab05f070" # Ubuntu Linux AMI
  instance_type          = "t2.micro"
  vpc_security_group_ids = [aws_security_group.webServerSG.id]
  user_data = templatefile("externalScripts/user_data.tpl", {
    name  = "Leo",
    names = ["Vasya", "Petya", "MASHA"]
  })

  tags = {
    Name = "myWebServer"
  }
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
Скорее всего вот ваша проблема: https://github.com/hashicorp/terraform-provider-aw...
если кратко: в версии 4.0 провайдера AWS для терраформа, реализовано следующее поведение: юзердату можно менять на созданном(но выключенном) инстансе и ее изменение не должно вызывать пересоздание инстанса. В документации написано что инстанс должен остановиться и стартовать, но, насколько я понимаю, у вас этого не происходит

Предположительно, решить проблему (для триггера пересоздания ресурса) вам должно помочь добавление random ресурса https://registry.terraform.io/providers/hashicorp/... с кипером в виде результата темплейта юзердаты, и указание его в depends_on для ресурса инстанса
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы