Как игнорировать повторяющуюся ошибку ресурса при терраформе? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь повторно применить свои изменения, используя 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: Terraform v0.12.9

1 Ответ

1 голос
/ 15 января 2020

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

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

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

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

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