Terraform Azurerm:根据变量值选择块 (storage_image_reference) 的值



我有一堆地形脚本来构建一个或多个虚拟机以及相关资源(nic,nfg,rg,数据磁盘,扩展,角色等)。我在 Ubuntu 和 CentOS 的 variables.tf 文件中定义了变量;但是,我必须取消注释我计划使用的那些。这是代码:

Ubuntu 映像的变量定义

variable os_publisher { default = "Canonical"}
variable os_offer { default = "UbuntuServer" }
variable os_sku { default = "18.04-LTS" }
variable os_version { default = "latest" }

CentOS 映像的变量定义

variable OS_publisher { default = "OpenLogic" }
variable OS_offer { default = "CentOS" }
variable OS_sku { default = "7.4" }
variable OS_version  { default = "latest" }

我想修改我的设置,以便当单个变量(例如 os_image)的值设置为 ubuntu 时,TF 会自动填充 vm.tf 中azurerm_virtual_machine资源下的以下块的正确值:

storage_image_reference {
publisher = "${var.os_publisher}"
offer     = "${var.os_offer}"
sku       = "${var.os_sku}"
version   = "${var.os_version}"
}

如果 os_image 的值设置为 centos,它就会安装 CentOS。

我查看了 if-else 条件和查找功能以及地图/列表选项,但我不确定使用哪一个以及如何使用。我也对其他解决方案持开放态度。

我将不胜感激。

谢谢 阿斯加尔

使用 map()

使用第一个变量os_publisher作为样本。

variable "os" {}
variable "os_publisher" {
type = "map"
default = {
ubuntu = "Canonical"
centos = "OpenLogic"
}
}

因此,您可以根据操作系统轻松引用该值。

storage_image_reference {
publisher = "${var.os_publisher[var.os]}"
...
}

相关内容

  • 没有找到相关文章

最新更新