首页 > 解决方案 > terraform中的案例陈述?

问题描述

嗨,我有下面的 terraform 代码块,它为我创建了用于 sql 和 app 角色的虚拟机。

module "sql_vms" {
  source                = "../../modules/compute/"
  rg_name               = var.resource_group_name
  location              = module.resource_group.external_rg_location
  vnet_name             = var.virtual_network_name
  subnet_name           = var.sql_subnet_name
  app_nsg               = var.application_nsg
  vm_count              = var.count_vm
  base_hostname         = var.sql_host_basename
  sto_acc_suffix        = var.storage_account_suffix
  vm_size               = var.virtual_machine_size
  vm_publisher          = var.virtual_machine_image_publisher
  vm_offer              = var.virtual_machine_image_offer
  vm_sku                = var.virtual_machine_image_sku
  vm_img_version        = var.virtual_machine_image_version
  username              = var.username
  password              = var.password
  allowed_source_ips    = var.ip_list
}

module "app_vms" {
  source                = "../../modules/compute/"
  rg_name               = var.resource_group_name
  location              = module.resource_group.external_rg_location
  vnet_name             = var.virtual_network_name
  subnet_name           = var.sql_subnet_name
  app_nsg               = var.application_nsg
  vm_count              = var.count_vm
  base_hostname         = var.app_host_basename
  sto_acc_suffix        = var.storage_account_suffix
  vm_size               = var.virtual_machine_size
  vm_publisher          = var.virtual_machine_image_publisher
  vm_offer              = var.virtual_machine_image_offer
  vm_sku                = var.virtual_machine_image_sku
  vm_img_version        = var.virtual_machine_image_version
  username              = var.username
  password              = var.password
  allowed_source_ips    = var.ip_list
}

module "resource_group" {
  source                = "../../modules/resourcegroup/"
  rg_name               = "test_rg"
}

虽然它帮助我完成工作。我不认为这是理想的,因为有很多共同的参数,只有很少的改变来创建不同的角色

特定于角色的参数如下:

subnet_name
vm_size
vm_publisher
vm_offer
vm_sku
vm_img_version

可以在 terraform 中执行 case 语句或循环吗?

标签: terraformazure-virtual-machineterraform-provider-azure

解决方案


我认为你需要做的不是找到一个循环来实现,相反,你可以尝试为每个变量设置默认值,只输入你想要指定的变量的特殊值。就像 Terraform Registry 中的 Azure,例如compute . 计算有很多变量,但您只需要指定您想要和需要的变量。我认为这是你真正需要的方式。


推荐阅读