Как интегрировать terraform с atlassian / localstack?

Terraform можно настроить с помощью пользовательских конечных точек S3, и кажется, что localstack может создавать локальные стеки для S3, SES, Cloudformation и некоторых других сервисов.

Вопрос в том, что написать в конфигурации Terraform, чтобы использовать конечную точку S3 localstack?


person cphoover    schedule 11.05.2017    source источник


Ответы (2)


Terraform официально не поддерживает системы, «похожие на работу с AWS», поскольку они часто имеют тонкие особенности и отличия от самого AWS. Тем не менее, он поддерживается в меру усилий и может работать, если localstack сможет обеспечить достаточно реалистичное впечатление о S3 для целей Terraform.

Согласно документации localstack, по умолчанию S3 API отображается в http://localhost:4572, поэтому установка пользовательской конечной точки таким образом может работать:

provider "aws" {
  endpoints {
    s3 = "http://localhost:4572"
  }
}

В зависимости от возможностей localstack вам может потребоваться установить некоторые другие параметры:

  • s3_force_path_style для использования схемы адресации на основе пути для сегментов и объектов.
  • skip_credentials_validation, поскольку в localstack, похоже, отсутствует реализация службы токенов AWS.
  • skip_metadata_api_check, если учетные данные в стиле IAM не будут использоваться, чтобы Terraform не пытался получить учетные данные из API метаданных EC2.
person Martin Atkins    schedule 12.05.2017

Основываясь на ответе @martin-atkins, вот образец файла Terraform, который работает с Localstack:

provider "aws" {
  region = "us-east-1"
  access_key = "anaccesskey"
  secret_key = "asecretkey"
  skip_credentials_validation = true
  skip_metadata_api_check = true
  s3_force_path_style = true
  endpoints {
    s3 = "http://localhost:4572"
  }
}

resource "aws_s3_bucket" "b" {
  bucket = "my-tf-test-bucket"
  acl    = "public-read"
}
person Geoffrey Booth    schedule 12.12.2017