首页 > 解决方案 > 如何使用 Terraform Azure CAF 部署 Windows VM?

问题描述

我想使用 Terraform部署带有Azure 云采用框架(CAF) 的 Windows VM。在 configuration.tfvars 的示例中,所有配置都已完成。但我找不到正确的 terraform 代码来部署此 tfvars 配置。

windows vm 模块在这里。

到目前为止,我已经编写了以下代码:

module "caf_virtual_machine" {
  source  = "aztfmod/caf/azurerm//modules/compute/virtual_machine"
  version = "5.0.0"
  # belows are the 7 required variables 

  base_tags = var.tags
  client_config = 
  global_settings = var.global_settings
  location = var.location
  resource_group_name = var.resource_group_name
  settings = 
  vnets =  var.vnets  
}

所以这些vnets, global_settings, resource_group_name变量已经存在于 configuration.tfvars 中。我已在 configuration.tfvars 中添加tagslocation变量。

但是我应该输入什么settings变量client_config

标签: azureterraformterraform-provider-azureazure-rm

解决方案


虚拟机是一个私有模块。您应该通过调用基本 CAF 模块来使用它。

terraform 注册表的自述文件解释了如何利用核心 CAF 模块 - https://registry.terraform.io/modules/aztfmod/caf/azurerm/latest/submodules/virtual_machine

示例源代码: https ://github.com/aztfmod/terraform-azurerm-caf/tree/master/examples/compute/virtual_machine/211-vm-bastion-winrm-a​​gents/registry

您有一个配置文件库示例,展示了如何部署虚拟机

https://github.com/aztfmod/terraform-azurerm-caf/tree/master/examples/compute/virtual_machine

   module "caf" {
    source  = "aztfmod/caf/azurerm"
    version = "5.0.0"
    
    global_settings    = var.global_settings
    tags               = var.tags
    resource_groups    = var.resource_groups
    storage_accounts   = var.storage_accounts
    keyvaults          = var.keyvaults
    managed_identities = var.managed_identities
    role_mapping       = var.role_mapping
    
    diagnostics = {
      # Get the diagnostics settings of services to create
      diagnostic_log_analytics    = var.diagnostic_log_analytics
      diagnostic_storage_accounts = var.diagnostic_storage_accounts
    }
    
    compute = {
      virtual_machines = var.virtual_machines
    }
    
    networking = {
      vnets                             = var.vnets
      network_security_group_definition = var.network_security_group_definition
      public_ip_addresses               = var.public_ip_addresses
    }
    
    security = {
      dynamic_keyvault_secrets = var.dynamic_keyvault_secrets
    }
  }

注意 - 建议利用源存储库中提供的 VScode devcontainer 来执行 terraform 部署。devcontainer 包括部署 Azure 解决方案所需的工具。


推荐阅读