Конфигурация Terraform для обновления уже существующего шаблона запуска - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь обновить уже существующий шаблон запуска на AWS, используя Terraform. Ниже приведена конфигурация для Terraform.

resource "aws_launch_template" "update" {
  name = data.aws_launch_template.config.name
  image_id = data.aws_ami.ubuntu.id
  instance_type = "c5.large"
//  arn = data.aws_launch_template.config.arn
}

При передаче имени выдается ошибка 400 с приведенной ниже ошибкой.

Error: InvalidLaunchTemplateName.AlreadyExistsException: Launch template name already in use.

Я хочу тот же шаблон запуска только с обновленной версией. Не удалось найти никакой документации на официальном сайте terraform для изменения шаблонов. Или я что-то упустил?

ОС - macOS Catalina

Версия Terraform - v0.12.21

1 Ответ

3 голосов
/ 27 февраля 2020

Одна вещь, которую следует отметить в отношении terraform в целом, заключается в том, что он хочет владеть всем жизненным циклом любых ресурсов, которыми он управляет.

В вашем примере aws_launch_template.update с таким именем уже существует, так что terraform говорит, по сути, , «Мне не принадлежит этот ресурс, поэтому я не должен его менять».

Это на самом деле довольно приятное преимущество, потому что это означает, что terraform не будет (или, по крайней мере, не должен) перезаписывать или удалять ресурсы о котором он не знает.

Теперь, так как вы ссылаетесь на существующий шаблон запуска, я бы рекомендовал перенести его в собственность terraform (при условии, что вам разрешено это делать). Для этого я бы рекомендовал

  • Жесткое кодирование имени шаблона запуска в самом ресурсе, а не ссылаться на него через data и

  • Импорт ресурса с помощью команды, подобной этой:

 terraform import aws_launch_template.update lt-12345678

Где вы заменили бы lt-12345678 на фактический идентификатор шаблона запуска. Это сделает ресурс находящимся в собственности terraform и фактически разрешит обновления через код terraform.

Просто будьте осторожны, чтобы не наступать на чужие ресурсы, если вы находитесь в контексте, где это было создано кто-то еще.

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