Ubuntu Terraform Azurerm:基于变量值为块(存储\图像\参考)选择值
我有一堆地形脚本来构建一个或多个虚拟机以及相关资源(nic、nfg、rg、数据磁盘、扩展、角色等)。我在variables.tf文件中为Ubuntu和CentOS定义了变量;但是,我必须取消我计划使用的注释。代码如下: Ubuntu映像的变量定义 CentOS映像的变量定义 我想修改我的设置,这样当单个变量(比如os_image)的值设置为ubuntu时,TF会自动为vm.TF中的azurerm_virtual_machine资源下的以下块填充正确的值:Ubuntu Terraform Azurerm:基于变量值为块(存储\图像\参考)选择值,ubuntu,centos,terraform,terraform-provider-aws,terraform-provider-azure,Ubuntu,Centos,Terraform,Terraform Provider Aws,Terraform Provider Azure,我有一堆地形脚本来构建一个或多个虚拟机以及相关资源(nic、nfg、rg、数据磁盘、扩展、角色等)。我在variables.tf文件中为Ubuntu和CentOS定义了变量;但是,我必须取消我计划使用的注释。代码如下: Ubuntu映像的变量定义 CentOS映像的变量定义 我想修改我的设置,这样当单个变量(比如os_image)的值设置为ubuntu时,TF会自动为vm.TF中的azurerm_virtual_machine资源下的以下块填充正确的值: storage_image_refere
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条件和lookup函数以及map/list选项,但我不确定使用哪一个以及如何使用。我也愿意接受其他解决方案
如果您能回复我,我将不胜感激
多谢各位
Asghar使用
使用第一个变量os\u publisher
作为示例
variable "os" {}
variable "os_publisher" {
type = "map"
default = {
ubuntu = "Canonical"
centos = "OpenLogic"
}
}
因此,您可以根据操作系统的不同轻松地引用该值
storage_image_reference {
publisher = "${var.os_publisher[var.os]}"
...
}
谢谢你。它就像一个符咒。我感谢你的迅速反应。
variable "os" {}
variable "os_publisher" {
type = "map"
default = {
ubuntu = "Canonical"
centos = "OpenLogic"
}
}
storage_image_reference {
publisher = "${var.os_publisher[var.os]}"
...
}