【问题标题】:Terraform output value failed formatted by jq in github actionsTerraform 输出值在 github 操作中由 jq 格式化失败
【发布时间】:2021-03-18 02:55:36
【问题描述】:

我想达到什么目标? 将 terraform 输出值(IP 地址)存储为 git hub 操作中的 env 变量,并在更新网络安全组期间使用它。 我做了什么? 基于:Github Actions, how to share a calculated value between job steps?

- name: Setup Terraform
  uses: hashicorp/setup-terraform@v1
- name: Extract gateway ip
  run: |
    terraform init    
    echo "IP_GAT=$(terraform output -json gatewayStaticIp | jq -r .)" >> $GITHUB_ENV
  working-directory: ${{ env.my_dir }}
- name: Update security group
  run: |   
    ip=${{ env.IP_GAT }}
    az network nsg rule update -g myGroup --nsg-name myName -n myRuleName --source-address-prefix $ip

显然 jq 存在一些问题,即使它看起来与示例中的完全相同(https://www.terraform.io/docs/commands/output.html):

Error: write EPIPE

有什么想法吗? 提前致谢

【问题讨论】:

  • 如果您只运行terraform output -json gatewayStaticIp 而不将其通过管道传输到 jq 会发生什么?您的 GitHub 操作环境是否也有可用的 jq?您的 sn-p 仅使用 hashicorp/setup-terraform@v1 操作显示它,该操作将仅安装 Terraform 核心二进制文件和 GitHub Actions 包装器。

标签: terraform jq github-actions


【解决方案1】:

hashicorp/setup-terraform@v1 使用包装器来执行 terraform,并在使用重定向时弄乱了输出(就像使用 shell 管道一样)。有一个问题描述了问题in their repo

禁用包装器将使其工作,但您将失去一些功能来重用来自 github 集成的 stdout、stderr 和退出代码。

 - name: Terraform setup
   uses: hashicorp/setup-terraform@v1
   with:
    terraform_version: 0.13.5
    terraform_wrapper: false

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 2021-10-01
    • 1970-01-01
    • 2023-01-28
    • 2021-10-06
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多