Terraform зависает в `Refreshing state` при работе с` localstack`

Я использую Terraform для публикации лямбда-выражения в AWS. Он отлично работает, когда я развертываю на AWS, но зависал в состоянии «Обновление ...» при работе с localstack.

Ниже мой файл конфигурации .tf, как вы можете видеть, я настроил конечную точку лямбда-выражения как http://localhost:4567.

provider "aws" {
  profile    = "default"
  region     = "ap-southeast-2"

  endpoints {
      lambda = "http://localhost:4567"
  }
}

variable "runtime" {
  default = "python3.6"
}

data "archive_file" "zipit" {
    type        = "zip"
    source_dir  = "crawler/dist"
    output_path = "crawler/dist/deploy.zip"
}
resource "aws_lambda_function" "test_lambda" {
  filename      = "crawler/dist/deploy.zip"
  function_name = "quote-crawler"
  role          = "arn:aws:iam::773592622512:role/LambdaRole"
  handler       = "handler.handler"
  source_code_hash = "${data.archive_file.zipit.output_base64sha256}"
  runtime = "${var.runtime}"

}

Ниже приведен файл docker compose для localstack:

version: '2.1'

services:
  localstack:
    image: localstack/localstack
    ports:
      - "4567-4583:4567-4583"
      - '8055:8080'
    environment:
      - SERVICES=${SERVICES-lambda }
      - DEBUG=${DEBUG- }
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR-docker-reuse }
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"

Кто-нибудь знает, как исправить проблему?


person Joey Yi Zhao    schedule 19.07.2019    source источник


Ответы (2)


Вот как я исправил похожую проблему:

  • Установите export TF_LOG=TRACE, который является наиболее подробным ведением журнала.
  • Запустите terraform plan ....
  • В журнале я нашел основную причину проблемы:
dag/walk: vertex "module.kubernetes_apps.provider.helmfile (close)" is waiting for "module.kubernetes_apps.helmfile_release_set.metrics_server"
  • Из журналов я определяю состояние, которое является причиной проблемы: module.kubernetes_apps.helmfile_release_set.metrics_server.

  • Я удалил его состояние:

terraform state rm module.kubernetes_apps.helmfile_release_set.metrics_server
  • Теперь запустите terraform plan снова, чтобы исправить проблему.

Это не лучшее решение, поэтому я связался с владельцем этого провайдера, чтобы исправить проблема без этого обходного пути.

person Abdennour TOUMI    schedule 21.07.2020

Причина, по которой я потерпел неудачу, потому что terraform пытается проверить учетные данные на AWS. Добавьте две строки ниже в файл конфигурации .tf, чтобы решить проблему.

skip_credentials_validation = true
  skip_metadata_api_check     = true
person Joey Yi Zhao    schedule 19.07.2019