我创建了一个 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
在 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 输出。
|
–
|