我有一个关于 Terraform 的问题。
我已经设置了一些文件,并且可以在 vSphere 上使用它很好地创建虚拟机。但在现在的公司:
我已经编写了几段代码,并且运行良好,但问题是每次我想从这段代码部署 VM 到 clusterA(网络为 1.2.3.4/24)时,网关为1.2.3.1等等,然后我将它们作为默认值放入代码中。然后,当我部署到 clusterB 时,我需要更新所有这些变量,例如。网络为 1.2.4.4/24,网关为 1.2.4.1,依此类推。能否以某种方式引入开关逻辑,例如:
我知道这不是最好的方法,而且由于我更精通 PowerShell,如果 Terraform 不支持 switch 语句(或者我红色),我最终会做一个解决方法(编写一个需要模板文件的 PS 脚本) ,进行切换,并根据用户的选择在运行 terraform plan / apply 之前替换模板文件中的变量),但我更愿意将所有内容保留在 Terraform 中...
我的起始代码在这里(抱歉有很多评论,它是为了给更初级/不熟悉 TF 团队成员的,所以需要啰嗦......): https: //code.prkr.li/ 4W4RsYTEm3
举个例子:
variable "vm_to_clone" {
description = "Enter the name of the vM that we will clone:"
# ! THIS IS THE VM THAT YOU ARE CLONING
# * changeme ->
# default …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个基于此存储库的项目
(我会问有关它的问题,但它很陈旧......)
我正在尝试执行任务,创建管道,但在此步骤中失败:
- pwsh: |
dotnet tool install --global GitVersion.Tool
Write-Output ">>>>>>>>>>>>>>>>"
dotnet-gitversion
Write-Output "<<<<<<<<<<<<<<<<"
$gitVersionObject = dotnet-gitversion | ConvertFrom-Json
$gitVersionObject.PSObject.Properties.ForEach{
Write-Host -Object "Setting Task Variable '$($_.Name)' with value '$($_.Value)'."
Write-Host -Object "##vso[task.setvariable variable=$($_.Name);]$($_.Value)"
}
Write-Host -Object "##vso[build.updatebuildnumber]$($gitVersionObject.FullSemVer)"
displayName: Calculate ModuleVersion (GitVersion)
Run Code Online (Sandbox Code Playgroud)
我发现这是 gitversion 的问题(也尝试了 AZ 任务中的 gitversion 任务)
INFO [09/23/22 11:30:47:90] HEAD points at branch 'refs/heads/gitversion-v5'.
INFO [09/23/22 11:30:47:90] End: Normalizing git directory for branch 'refs/heads/gitversion-v5' (Took: 90.63ms)
INFO [09/23/22 11:30:47:91] Begin: Loading version variables from disk …
Run Code Online (Sandbox Code Playgroud)