gpt4 book ai didi

地形开关?

转载 作者:行者123 更新时间:2023-12-05 08:16:48 24 4
gpt4 key购买 nike

我对 Terraform 有疑问。

我已经设置了一些文件,我可以在 vSphere 上用它很好地创建 VM。但是在现在的公司:

  • 我们有两个可以部署虚拟机的集群
  • 我们还有两个可以加入 VM 的 AD 域

我已经在其中编写了一些代码,并且运行良好,但问题是每次我想从这段代码部署 VM-s 到 clusterA,网络为 1.2.3.4/24 ,网关是1.2.3.1等等,然后我把这些默认放到代码里。然后,当我部署到 clusterB 时,我需要更新所有这些变量,例如。网络为 1.2.4.4/24,网关为 1.2.4.1,依此类推。能否以某种方式引入开关逻辑,例如:

  • 如果变量(从控制台读取,类似于 PS-s Read-Host)是“foo”,则使用这个集合或变量。如果该变量是“bar”,则使用一组不同的变量。如果用户输入的变量既不是“foo”也不是“bar”,则抛出错误?

我知道这不是最好的方法,因为我更精通 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 = "bnw_2019_gui" # * uncomment this line for deploying in BN
default = "alw_2019_gui" # * uncomment this line for deploying in AL
}
  • 目前这将使用我在“ALW”集群中设置的模板。要使用“BNW”集群的模板,我需要注释“bnw_2019_gui”行并注释“alw_2019_gui”行。 (或者当然用 terraform plan/apply 给出一个最重要的值)。但我更喜欢根据所选集群进行切换。

有什么建议吗?

谢谢

最佳答案

switch 本身不受 TF 支持,但您可以使用常规 map将使用什么 switch(如果我正确理解您的用例)。

因此,与其将所有变量分开,不如将它们捆绑到一个 map 中,键为 foobar。要使用哪个 key ,您将从控制台提供。

粗略的例子:


variable "cluster" {
}


variable "setup" {

default = {
"foo" = {
"vm_to_clone" = "bnw_2019_gui"
"vm_folder" = "BN-ALL-SIMPLIVITY-VMS"
# and the rest
},
"bar" = {
"vm_to_clone" = "alw_2019_gui"
"vm_folder" = "AL-ALL-SIMPLIVITY-VMS"
# and the rest
},
}
}

然后,根据您的集群(foobar),您将在其余部分中使用不同的变量值代码:

data "vsphere_virtual_machine" "template_vm" {
name = var.setup[var.cluster].vm_to_clone
datacenter_id = data.vsphere_datacenter.target_datacenter.id
}

# and similarly for the rest.

关于地形开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68528209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com