【问题标题】:Azure Terraform Build Generic Components using Infrastructure as CodeAzure Terraform 使用基础结构即代码构建通用组件
【发布时间】:2022-02-22 13:40:44
【问题描述】:

我是 Terraform 和 Azure 的新手。我正在尝试使用 Terraform 构建资源组/资源。以下是相同的设计。

我已经编写了 Terraform 代码来构建 Log Analytics 工作区和自动化帐户。 下面是我的问题:

  1. 成本管理 / Azure Monitor / Network Watcher / Defender for Cloud ?我可以使用此资源组中的 Terraform 代码构建所有这些,还是需要从 Azure 门户手动构建。当我们在左侧创建任何资源时,诸如成本估算器/管理之类的选项已经可用。这是否意味着它们可以在使用时轻松地从那里选择,而无需从 Terraform 代码构建?
  2. 我们如何从 Terraform 代码应用角色授权/策略分配?

这是我为构建自动化帐户/日志分析而编写的代码

terraform {

  required_version = ">=0.12"
  
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}

provider "azurerm" {
  features {}
}

  resource "azurerm_resource_group" "management" {
 
  # Mandatory resource attributes
  name     = "k8s-log-analytics-test"
  location = "eastus"
  
}

resource "random_id" "workspace" {
  keepers = {
    # Generate a new id each time we switch to a new resource group
    group_name = azurerm_resource_group.management.name
  }

  byte_length = 8
}

resource "azurerm_log_analytics_workspace" "management" {
  

  # Mandatory resource attributes
  name                = "k8s-workspace-${random_id.workspace.hex}"
  location            = azurerm_resource_group.management.location
  resource_group_name = azurerm_resource_group.management.name

  # Optional resource attributes 
  retention_in_days          = 30
  sku                        = "PerGB2018"


}

resource "azurerm_log_analytics_solution" "management" {

  # Mandatory resource attributes
  solution_name         = "mgmyloganalytsolution"
  location              = azurerm_resource_group.management.location
  resource_group_name   = azurerm_resource_group.management.name
  workspace_resource_id = azurerm_log_analytics_workspace.management.id
  workspace_name        = azurerm_log_analytics_workspace.management.name
  plan {
    publisher = "Microsoft"
    product   = "OMSGallery/ContainerInsights"
  }


}

resource "azurerm_automation_account" "management" {
  
  # Mandatory resource attributes
  name                = "mgmtautomationaccount"
  location            = azurerm_resource_group.management.location
  resource_group_name = azurerm_resource_group.management.name 
  sku_name = "Basic"
 

}

resource "azurerm_log_analytics_linked_service" "management" {

  # Mandatory resource attributes
  resource_group_name = azurerm_resource_group.management.name
  workspace_id        = azurerm_log_analytics_workspace.management.id
  read_access_id  = azurerm_automation_account.management.id
 

}
 

【问题讨论】:

    标签: azure terraform terraform-provider-azure


    【解决方案1】:

    成本管理 / Azure Monitor / Network Watcher / Defender for Cloud ?能 我使用此资源组中的 Terraform 代码构建所有这些,或者它们 需要从 Azure 门户手动构建。当我们创建任何资源时 在左侧的选项,如成本估算器/管理是 已经可用。这是否意味着它们可以很容易地从 有使用,不需要从 Terraform 代码构建?

    是的,您可以使用 azurerm_network_watcher、azurerm_network_watcher_flow_log、azurerm_monitor_metric_alert、...、azurerm_resource_group_cost_management_export、azurerm_consumption_budget_resource_group 等 terraform 资源块创建网络观察程序、Azure Monitor 资源和成本管理等等Defender for Cloud 不能从 terraform 构建。是的,您是正确的,成本管理、监控等也可在门户网站上使用,但需要创建其资源,如预算警报等,以简化它已添加为门户网站中的刀片。


    我们如何从 Terraform 应用角色授权/策略分配 代码?

    您可以使用azurerm_role_assignment 分配内置角色并使用azurerm_role_definition 创建自定义角色然后分配它。对于策略分配,您可以使用此azurerm_resource_policy_assignment 并使用azurerm_policy_insights_remediation 进行修复。


    对于所有 azure 资源块,您可以参考 Official Registry Documentation of Terraform AzureRM Provider 和 Terraform AzureAD Provider。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2022-01-05
      • 2019-02-03
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多