Как игнорировать ошибку дублирования ресурсов во время применения терраформирования?

Я пытаюсь повторно применить свои изменения, используя terraform apply, но когда я делаю это снова, это дает мне ошибку с уже существующим ресурсом и останавливает развертывание.

Пример:

Error: AlreadyExistsException: An alias with the name arn:aws:kms:us-east-1:490449857273:alias/continuedep-cmk-us-east-1 already exists
        status code: 400, request id: 4447fd20-d33b-4c87-891e-cc5e09cc6108

  on ../../../modules/kms_cmk/main.tf line 11, in resource "aws_kms_alias" "keyalias":
  11: resource "aws_kms_alias" "keyalias" {



Error: Error creating DB Subnet Group: DBSubnetGroupAlreadyExists: The DB subnet group 'continuedep-sbg' already exists.
        status code: 400, request id: 97d662b6-79d4-4fde-aaf7-a2f3e5a0bd9e

  on ../../../modules/rds-postgres/main.tf line 2, in resource "aws_db_subnet_group" "generic_db_subnet_group":
   2: resource "aws_db_subnet_group" "generic_db_subnet_group" {

Точно так же у меня возникают ошибки со многими другими существующими ресурсами. Я хочу избежать / игнорировать такие ошибки и продолжить развертывание.

Какой еще способ я могу использовать, чтобы перезапустить развертывание ресурсов терраформ с того места, где оно было прервано посередине.

Моя версия terraform: Terraform v0.12.9


person KanikaM    schedule 15.01.2020    source источник
comment
Где вы храните состояние? Можете ли вы предоставить разделы конфигурации состояния и полные команды, которые вы выполняете? Я предполагаю, что для последующего применения будет другое или отсутствующее состояние.   -  person Andy Shinn    schedule 17.01.2020
comment
Я бы сказал, что импорт ресурса в состояние terrafom - это путь, см. Также этот вопрос: stackoverflow.com/questions/62654684/ Кроме того, вы должны попытаться выяснить, почему ваше состояние не сохраняется правильно.   -  person Falk Tandetzky    schedule 30.06.2020


Ответы (1)


Ошибки возвращаются API, вызываемым провайдером Terraform.

Возможные причины этого могут быть:

  • вы (или кто-то другой) выполнили свой код Terraform, и у вас нет общего / обновленного состояния
  • кто-то создал их вручную
  • сбой при уничтожении Terraform, в результате которого были удалены ресурсы для API, но не удалось сохранить состояние обновления.

решения зависит от того, что вам нужно. Вы можете:

  • удалите эти ресурсы из кода Terraform, чтобы перестать управлять ими с его помощью
  • удалить эти ресурсы из API (облачного провайдера) и воссоздать их с помощью Terraform
  • Выполните терраформный импорт этих ресурсов и удалите терраформный код, который пытается их воссоздать (НЕ РЕКОМЕНДУЕТСЯ)
  • используйте terraform apply --target=xxx, чтобы применять только те ресурсы, которые вам нужны (НЕ РЕКОМЕНДУЕТСЯ)
person RoviNX    schedule 15.01.2020
comment
Для меня это больше похоже на то, что их состояние не было доступно для подачи заявки. Я думаю, что это дает основания задавать вопросы о государстве, чтобы сузить круг вопросов. - person Andy Shinn; 17.01.2020