Одна вещь, которую следует отметить в отношении terraform в целом, заключается в том, что он хочет владеть всем жизненным циклом любых ресурсов, которыми он управляет.
В вашем примере aws_launch_template.update
с таким именем уже существует, так что terraform говорит, по сути, , «Мне не принадлежит этот ресурс, поэтому я не должен его менять».
Это на самом деле довольно приятное преимущество, потому что это означает, что terraform не будет (или, по крайней мере, не должен) перезаписывать или удалять ресурсы о котором он не знает.
Теперь, так как вы ссылаетесь на существующий шаблон запуска, я бы рекомендовал перенести его в собственность terraform (при условии, что вам разрешено это делать). Для этого я бы рекомендовал
Жесткое кодирование имени шаблона запуска в самом ресурсе, а не ссылаться на него через data
и
Импорт ресурса с помощью команды, подобной этой:
terraform import aws_launch_template.update lt-12345678
Где вы заменили бы lt-12345678
на фактический идентификатор шаблона запуска. Это сделает ресурс находящимся в собственности terraform и фактически разрешит обновления через код terraform.
Просто будьте осторожны, чтобы не наступать на чужие ресурсы, если вы находитесь в контексте, где это было создано кто-то еще.