如何使用 Terraform Azure CAF 部署 Windows VM?

问题描述

我想使用 terraform 部署带有 Azure 云采用框架 (CAF) 的 Windows 虚拟机。 In the example of configuration.tfvars,所有配置都已完成。但我找不到正确的 terraform 代码来部署此 tfvars 配置。

windows vm 模块是 here.

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

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 中。我已将 tagslocation 变量添加到 configuration.tfvars。

但是我应该为 settingsclient_config 变量输入什么?

解决方法

虚拟机是一个私有模块。您应该通过调用基本 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-agents/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 解决方案所需的工具。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...