Terraform из синхронизации - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с тем, что моя терраформа как-то отличается от развернутой, хотя я не знаю почему.Согласно моей истории мерзавцев, файл, который управляет Cognito User Pools, не изменился с момента его развертывания, но terraform считает, что это так, и жалуется, что изменения требуют принудительного создания нового ресурса.

версия terraform: 0.11.7

Версия провайдера AWS: 1.14.1

My Terraform code:

resource "aws_cognito_user_pool" "my_app" {
  name                          = "My App Pool"

  /* Fields that can work as aliases */
  alias_attributes              = [
    "email"
  ]

  /* Auto-verify these fields */
  auto_verified_attributes      = [
    "email"
  ]

  /* This is the template used to verify addresses / accounts */
  verification_message_template {
    default_email_option        = "CONFIRM_WITH_CODE"
  }

  admin_create_user_config {
    allow_admin_create_user_only = false
    invite_message_template {
      email_message             = <<EOF    
  {####}
  EOF

      email_subject             = "MyApp"
      sms_message               = "Welcome to MyApp.  Your username: {username} and password: {####}  Thank you!"
    }
  }

  email_verification_subject    = "MyApp's Confirmation Code"
  email_verification_message    = "Your confirmation code: {####}   Thank you."

password_policy {
    minimum_length              = 8
    require_lowercase           = true
    require_numbers             = true
    require_symbols             = true
    require_uppercase           = true
}

  schema {
    attribute_data_type         = "String"
    developer_only_attribute    = false
    mutable                     = true
    name                        = "email"
    required                    = true
  }

  schema {
    attribute_data_type         = "String"
    developer_only_attribute    = false
    mutable                     = true
    name                        = "custom1"
    required                    = false
  }

  schema {
    attribute_data_type         = "String"
    developer_only_attribute    = false
    mutable                     = true
    name                        = "custom2"
    required                    = false
  }

  tags {
    "name"                      = "MyApp"
    "Project"                   = "Terraform"
  }
}

Я получаю следующий результат:

  schema.3021841581.attribute_data_type:                              "String" => "" (forces new resource)
  schema.3021841581.developer_only_attribute:                         "false" => "false"
  schema.3021841581.mutable:                                          "true" => "false" (forces new resource)
  schema.3021841581.name:                                             "custom1" => "" (forces new resource)
  schema.3021841581.number_attribute_constraints.#:                   "0" => "0"
  schema.3021841581.required:                                         "false" => "false"
  schema.3021841581.string_attribute_constraints.#:                   "1" => "0" (forces new resource)
  schema.3021841581.string_attribute_constraints.0.max_length:        "" => ""
  schema.3021841581.string_attribute_constraints.0.min_length:        "" => ""

Я пытался обновление Terraform , и это не сработало.

Показывает, что находится в состоянии, выполняя показ состояния terraform дает это

 schema.3021841581.attribute_data_type                              = String
 schema.3021841581.developer_only_attribute                         = false
 schema.3021841581.mutable                                          = true
 schema.3021841581.name                                             = custom1
 schema.3021841581.number_attribute_constraints.#                   = 0
 schema.3021841581.required                                         = false
 schema.3021841581.string_attribute_constraints.#                   = 1

Итак, мой вопрос:

  1. Я знаю, что это, вероятно, не идеально, но есть ли способ игнорировать или пропустить Cognito?Я не хочу ничего менять в этом сервисе, и мне нужно защищать его из-за наших пользователей.

  2. Есть ли способ выяснить, почему он считает, что есть разница, и разрешить еебез разрушения моего бассейна?

1 Ответ

0 голосов
/ 16 мая 2018
  1. Вы можете использовать опцию -target в своем плане / применить операции. Здесь вы должны указать ресурс, который хотите обновить / создать. Terraform ограничит работу этим ресурсом. Если у вас есть зависимости или вы собираетесь обновить / создать несколько ресурсов, вы можете использовать эту опцию столько раз, сколько захотите.
  2. Если по какой-то причине он не синхронизирован, возможно, вы можете использовать команду импорта terraform, предназначенную для проблемного ресурса (ов). Это попытается восстановить текущую конфигурацию, которую вы развернули, но у этого подхода есть некоторые ограничения, и не все импортируется.
...