使用 github actions 自动化 terraform 导入

问题描述 投票:0回答:1

我正在将手动创建的 aws lambda 函数导入到 terraform 中。由于我们有很多环境和区域,因此我们使用 terragrunt。 我能够使用模块导入 lambda 函数:

resource "aws_lambda_function" "imported_lambda" {
   function_name = "myLambda"
}

然后我用以下命令进行了 terragrunt 导入:

- name: Terragrunt import
  id: terragrunt_import
  uses: gruntwork-io/terragrunt-action@v2
  with:
    tf_version: ${{ github.event.inputs.tf_version }}
    tg_command: 'import'
    tg_version: ${{ github.event.inputs.tg_version }}
    tg_dir: target-repo
  env:
    AWS_SDK_LOAD_CONFIG: 1

我下一步的计划是将 terragrunt 显示为 json 并将该 json 提取到文件中。然后编写一个 python 脚本来读取该 json 文件并创建一个新模块来使用 terraform 管理这个 lambda 函数。

如果我这样做:

terraform show -json > myfile.txt
使用以下步骤:

- name: Terragrunt show
  uses: gruntwork-io/terragrunt-action@v2
  with:
    tf_version: ${{ github.event.inputs.tf_version }}
    tg_command: 'show -json > myfile.txt'
    tg_version: ${{ github.event.inputs.tg_version }}
    tg_dir: target-repo
  env:
    AWS_SDK_LOAD_CONFIG: 1

它会抛出错误,参数太多

有没有办法将所有导入的资源(lambda)提取到文本文件中,以便我使用 python 读取它?

amazon-web-services aws-lambda terraform terraform-provider-aws terragrunt
1个回答
0
投票

我会尝试使用

show -json
作为命令,然后引用后续步骤中操作的
tg_action_output
输出,将其写入文件或按原样使用。

类似:

- name: Terragrunt show
  id: terragrunt_show
  uses: gruntwork-io/terragrunt-action@v2
  with:
    tf_version: ${{ github.event.inputs.tf_version }}
    tg_command: 'show -json'
    tg_version: ${{ github.event.inputs.tg_version }}
    tg_dir: target-repo
  env:
    AWS_SDK_LOAD_CONFIG: 1

- run: 'echo ${{ steps.terragrunt_show.outputs.tg_action_output }}'
© www.soinside.com 2019 - 2024. All rights reserved.