跳转到主要内容

LocalStack 扩展:LocalStack Terraform 初始化

项目描述

在LocalStack初始化钩子中使用Terraform文件

LocalStack扩展,用于在初始化钩子中使用Terraform文件。

[!WARNING] 此扩展是实验性的,可能会更改。

[!NOTE] 该扩展专为简单的自包含Terraform文件设计,不适用于复杂的项目或模块。如果您有较大的项目,则建议在主机上运行它们。

使用方法

  • 使用EXTENSION_AUTO_INSTALL="localstack-extension-terraform-init"启动LocalStack
  • main.tf文件挂载到/etc/localstack/init/ready.d

当LocalStack启动时,它将安装扩展,扩展程序反过来将安装terraformtflocal到容器中。如果初始化阶段目录之一包含main.tf,则扩展程序将在该目录上运行tflocal inittflocal apply

[注意] 如果您将整个文件夹挂载到 /etc/localstack/init/ready.d,则 Terraform 状态文件将在您的宿主目录中创建。这些文件由容器内的容器用户创建,因此您可能需要 sudo 来从您的宿主中删除这些文件。如果您只挂载 main.tf 文件,而不是整个目录,则每次在 tflocal init 期间,localstack 都必须下载 AWS Terraform 提供程序。

示例

示例 main.tf

resource "aws_s3_bucket" "example" {
  bucket = "my-tf-test-bucket"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }
}

使用挂载的 main.tf 启动 LocalStack Pro

localstack start \
  -e EXTENSION_AUTO_INSTALL="localstack-extension-terraform-init" \
  -v ./main.tf:/etc/localstack/init/ready.d/main.tf

或者,如果您使用 docker-compose 文件

services:
  localstack:
    container_name: "localstack-main"
    image: localstack/localstack-pro  # required for Pro
    ports:
      - "127.0.0.1:4566:4566"            # LocalStack Gateway
    environment:
      # Activate LocalStack Pro: https://docs.localstack.cloud/getting-started/auth-token/
      - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:?}
      - EXTENSION_AUTO_LOAD=localstack-extension-terraform-init"
    volumes:
      # you could also place your main.tf in `./ready.d` and set "./ready.d:/etc/localstack/init/ready.d"
      - "./main.tf:/etc/localstack/init/ready.d/main.tf"
      - "./volume:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

在新的终端窗口中,您可以等待 localstack 完成,然后打印创建的 s3 存储桶。

localstack wait && awslocal s3 ls

日志应显示类似以下内容

2024-06-26T20:36:19.946  INFO --- [ady_monitor)] l.extension                : Applying terraform project from file /etc/localstack/init/ready.d/main.tf
2024-06-26T20:36:19.946 DEBUG --- [ady_monitor)] localstack.utils.run       : Executing command: ['tflocal', '-chdir=/etc/localstack/init/ready.d', 'init', '-input=false']
2024-06-26T20:36:26.864 DEBUG --- [ady_monitor)] localstack.utils.run       : Executing command: ['tflocal', '-chdir=/etc/localstack/init/ready.d', 'apply', '-auto-approve']

安装本地开发版本

要将扩展安装到开发者模式的 localstack 中,您需要 Python 3.10,并在扩展项目下创建一个虚拟环境。

在新生成的项目中,只需运行

make install

然后,为了启用 LocalStack 中的扩展,运行

localstack extensions dev enable .

然后,您可以通过设置 EXTENSION_DEV_MODE=1 来启动 LocalStack,以加载所有启用的扩展

EXTENSION_DEV_MODE=1 localstack start

从 GitHub 仓库安装

要分发您的扩展,只需将其上传到您的 GitHub 账户。然后,您可以通过以下方式安装

localstack extensions install "git+https://github.com/localstack/localstack-extensions/#egg=localstack-extension-terraform-init&subdirectory=terraform-init"

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

构建分布

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页