我创建了一个 Azure devOps Pipeline,其任务是输出人类可读的 Terraform 计划。

我有下面的管道任务,它在没有任何警告的情况下运行……

 - task: TerraformOutput@1
   enabled: true
   inputs:
     outputFilePath: $(System.DefaultWorkingDirectory)/deployment_layer/network/tfplan'
     artifactName: 'tfplan'

我现在收到警告:

##[警告]任务“Terraform Load Output”版本 1(TerraformOutput@1)依赖于已终止使用的 Node 版本(10)。

联系扩展所有者获取任务的更新版本。任务维护者应查看节点升级指南:

我查看了该网址,但不明白他们所说的内容与我解决警告的任务有何关联。

我将尝试找到一个类似的“任务”,以选项卡的形式创建和发布一个人类可读的 Terraform 计划 – 除了“TerraformOutput@1”之外,还有其他人使用其他任务类型来执行此操作吗?

- task: TerraformOutput@1
  enabled: true
  displayName: "Create human readbale plan"
  inputs:
    outputFilePath: '$(System.DefaultWorkingDirectory)/deployment_layer/re_id/tfplan'
    artifactName: 'tfplan'

1

  • 1
    您可能应该在这里提出问题: 或者提交拉取请求。


    – 


最佳答案
1

在 Azure DevOps 中使用 TerraformOutput@1 任务时我会收到同样的警告。

这表明管道任务正在使用已过期的节点版本。警告来自任务本身。

参考TerraformOutput任务配置:

  "execution": {
    "Node10": {
      "target": "src/index.js"
    }
  }

我们需要联系扩展开发人员来更新扩展所依赖的节点版本。正如 jessehouwing 分享的,我们可以在中创建问题反馈单。

根据我的测试,这个警告暂时不影响任务的使用,你可以忽略这个警告继续使用。

我将尝试找到一个类似的“任务”,以选项卡的形式创建和发布一个人类可读的 Terraform 计划 – 除了“TerraformOutput@1”之外,还有其他人使用其他任务类型来执行此操作吗?

我担心没有开箱即用的管道任务(内置或扩展任务)可以实现相同的功能(在管道选项卡中显示 Terraform 计划输出)。

作为解决方法,我们可以使用 terraform show 命令将 tfplan 文件转换为人类可读的格式,并使用将文件输出到管道任务。

以下是一个例子:

steps:
- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'init'
    xxx
- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'plan'
    commandOptions: '-out=tfplan'
    environmentServiceNameAzureRM: 'xx'
- task: TerraformTaskV4@4
  inputs:
    provider: 'azurerm'
    command: 'show'
    commandOptions: 'tfplan -no-color'
    outputTo: 'file'
    outputFormat: 'default'
    fileName: 'tfplan.md'
    environmentServiceNameAzureRM: 'xx'
- bash: | 
    ls -la
    sed -i '1 i\```' tfplan.md
    echo '```' >> tfplan.md
    echo "##vso[task.uploadsummary]$(System.DefaultWorkingDirectory)/tfplan.md"

结果:

在这种情况下,我们可以在 Pipeline 选项卡中看到人类可读的 Terraform 输出。