首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地形模型误差主要与测井分析有关。

地形模型误差主要与测井分析有关。
EN

Stack Overflow用户
提问于 2022-03-10 11:33:00
回答 1查看 779关注 0票数 0

我正在学习TF,在学习模块的同时,我决定只在我的Azure帐户上创建资源,使用TF来加速我的学习。在这张便条上,我发现了这个gitbub https://github.com/kumarvna/terraform-azurerm-virtual-machine

我一直在跟踪内容,并试图在我的测试系统上复制,我试图联系作者,但没有结果,我觉得我已经浪费了两个星期来解决这个问题,让我在这里寻求帮助。

我的设置.

把我的笔记本电脑里的密码从回购器上拿出来。从powershell控制台登录到我的Azure帐户。创建了一个名为create_vm的文件夹,在我的main.tf文件上的那个文件夹中,我有以下内容。这是一个linux示例,但我在windows示例中也遇到了同样的问题。

代码语言:javascript
复制
# Azurerm provider configuration
provider "azurerm" {
  features {}
}

# Creates a new resource group
resource "azurerm_resource_group" "test_build" {
  name     = "testBuild"
  location = "West Europe"
}

# Creates a new network
resource "azurerm_virtual_network" "example" {
  name                = "example-network"
  location            = azurerm_resource_group.test_build.location
  resource_group_name = azurerm_resource_group.test_build.name
  address_space       = ["10.0.0.0/16"]
  dns_servers         = ["10.0.0.4", "10.0.0.5"]

  subnet {
    name           = "subnet1"
    address_prefix = "10.0.1.0/24"
  }
}

# Creates a new la workspace
resource "azurerm_log_analytics_workspace" "la" {
  name                = "loganalytics-we-sharedtest2"
  resource_group_name = azurerm_resource_group.test_build.name
}

module "virtual-machine" {
  source  = "kumarvna/virtual-machine/azurerm"
  version = "2.3.0"

  # Resource Group, location, VNet and Subnet details
  resource_group_name  = azurerm_resource_group.test_build.name
  location             = "westeurope"
  virtual_network_name = azurerm_virtual_network.example.name
  subnet_name          = "subnet1"
  virtual_machine_name = "vm-linux"

  # This module support multiple Pre-Defined Linux and Windows Distributions.
  # Check the README.md file for more pre-defined images for Ubuntu, Centos, RedHat.
  # Please make sure to use gen2 images supported VM sizes if you use gen2 distributions
  # Specify `disable_password_authentication = false` to create random admin password
  # Specify a valid password with `admin_password` argument to use your own password 
  # To generate SSH key pair, specify `generate_admin_ssh_key = true`
  # To use existing key pair, specify `admin_ssh_key_data` to a valid SSH public key path.  
  os_flavor               = "linux"
  linux_distribution_name = "ubuntu2004"
  virtual_machine_size    = "Standard_B2s"
  generate_admin_ssh_key  = true
  instances_count         = 2

  # Proxymity placement group, Availability Set and adding Public IP to VM's are optional.
  # remove these argument from module if you dont want to use it.  
  enable_proximity_placement_group = true
  enable_vm_availability_set       = true
  enable_public_ip_address         = true

  # Network Seurity group port allow definitions for each Virtual Machine
  # NSG association to be added automatically for all network interfaces.
  # Remove this NSG rules block, if `existing_network_security_group_id` is specified
  nsg_inbound_rules = [
    {
      name                   = "ssh"
      destination_port_range = "22"
      source_address_prefix  = "*"
    },
    {
      name                   = "http"
      destination_port_range = "80"
      source_address_prefix  = "*"
    },
  ]

  # Boot diagnostics to troubleshoot virtual machines, by default uses managed 
  # To use custom storage account, specify `storage_account_name` with a valid name
  # Passing a `null` value will utilize a Managed Storage Account to store Boot Diagnostics
  enable_boot_diagnostics = true

  # Attach a managed data disk to a Windows/Linux VM's. Possible Storage account type are: 
  # `Standard_LRS`, `StandardSSD_ZRS`, `Premium_LRS`, `Premium_ZRS`, `StandardSSD_LRS`
  # or `UltraSSD_LRS` (UltraSSD_LRS only available in a region that support availability zones)
  # Initialize a new data disk - you need to connect to the VM and run diskmanagemnet or fdisk
  data_disks = [
    {
      name                 = "disk1"
      disk_size_gb         = 100
      storage_account_type = "StandardSSD_LRS"
    },
    {
      name                 = "disk2"
      disk_size_gb         = 200
      storage_account_type = "Standard_LRS"
    }
  ]

  # (Optional) To enable Azure Monitoring and install log analytics agents
  # (Optional) Specify `storage_account_name` to save monitoring logs to storage.   
  log_analytics_workspace_id = azurerm_log_analytics_workspace.la.id

  # Deploy log analytics agents to virtual machine. 
  # Log analytics workspace customer id and primary shared key required.
  deploy_log_analytics_agent                 = true
  log_analytics_customer_id                  = azurerm_log_analytics_workspace.la.workspace_id
  log_analytics_workspace_primary_shared_key = azurerm_log_analytics_workspace.la.primary_shared_key

  # Adding additional TAG's to your Azure resources
  tags = {
    ProjectName  = "demo-project"
    Env          = "dev"
    Owner        = "user@example.com"
    BusinessUnit = "CORP"
    ServiceClass = "Gold"
  }
}

在variables.tf上。

代码语言:javascript
复制
variable "log_analytics_workspace_name" {
  description = "The name of log analytics workspace name"
  default     = null
}

variable "storage_account_name" {
  description = "The name of the hub storage account to store logs"
  default     = null
}
variable "create_resource_group" {
  description = "Whether to create resource group and use it for all networking resources"
  default     = true
}

请注意,我添加了create_resource_group变量试图解决我的问题,但没有效果。

然后我跑

地形地貌图

我在地形图中得到了以下错误

代码语言:javascript
复制
│ Error: Error: Log Analytics workspaces "loganalytics-we-sharedtest2" (Resource Group "rg-shared-westeurope-01") was not found
│
│   with data.azurerm_log_analytics_workspace.example,
│   on main.tf line 6, in data "azurerm_log_analytics_workspace" "example":
│    6: data "azurerm_log_analytics_workspace" "example" {
│
╵
╷
│ Error: Error: Resource Group "rg-shared-westeurope-01" was not found
│
│   with module.virtual-machine.data.azurerm_resource_group.rg,
│   on .terraform\modules\virtual-machine\main.tf line 27, in data "azurerm_resource_group" "rg":
│   27: data "azurerm_resource_group" "rg" {
│

我做了什么?

missing.

  • Added (顶部的变量)
  • 仔细查看了代码,看看我是什么。
  • 尝试使用一个现有的资源组,但我觉得这违背了使用一个变量的目的,该变量询问是否可以创建一个新的资源组,以防它还不存在。

还有什么让人困惑的?

最初我有另一个模块文件夹,后来我意识到,当我运行terraform init时,这个模块是一个公共的模块,现在有办法将它作为一个本地化的模块吗?

我已经做了下面的答案所建议的修改,但是为了不把这个问题变成一个冗长的问题,我把下面的错误放在了下面。

代码语言:javascript
复制
│ Error: Error: Subnet: (Name "subnet1" / Virtual Network Name "testBuild_vnet" / Resource Group "testBuild") was not found
│
│   with module.virtual-machine.data.azurerm_subnet.snet,
│   on .terraform\modules\virtual-machine\main.tf line 36, in data "azurerm_subnet" "snet":
│   36: data "azurerm_subnet" "snet" {
│
╵
╷
│ Error: Invalid count argument
│
│   on .terraform\modules\virtual-machine\main.tf line 443, in resource "azurerm_monitor_diagnostic_setting" "nsg":
│  443:   count                      = var.existing_network_security_group_id == null && var.log_analytics_workspace_id != null ? 1 : 0
│
│ The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.
EN

回答 1

Stack Overflow用户

发布于 2022-03-10 12:15:29

我认为误解是,您认为模块创建了一个资源组,但事实并非如此。该模块期望已有的资源组为var.resource_group_name (输入变量virtual_network_namesubnet_namelog_analytics_workspace_id也是如此)。

resource_data_前缀的主要区别是数据源是只读的,“只”获取现有的基础设施以供进一步使用:

数据源允许Terraform使用在Terraform之外定义、由另一个单独的Terraform配置定义或由函数修改的信息。

https://www.terraform.io/language/data-sources

因此,在您的情况下,它的工作方式应该是(而不是测试):

代码语言:javascript
复制
# Azurerm provider configuration
provider "azurerm" {
  features {}
}

# Creates a new resource group
resource "azurerm_resource_group" "test_build" {
  name     = "testBuild"
  location = "West Europe"
}

# Creates a new network
resource "azurerm_virtual_network" "example" {
  name                = "example-network"
  location            = azurerm_resource_group.test_build.location
  resource_group_name = azurerm_resource_group.test_build.name
  address_space       = ["10.0.0.0/16"]
  dns_servers         = ["10.0.0.4", "10.0.0.5"]

  subnet {
    name           = "subnet1"
    address_prefix = "10.0.1.0/24"
  }
}

# Creates a new la workspace
resource "azurerm_log_analytics_workspace" "la" {
  name                = "loganalytics-we-sharedtest2"
  resource_group_name = azurerm_resource_group.test_build.name
}

module "virtual-machine" {
  source  = "kumarvna/virtual-machine/azurerm"
  version = "2.3.0"

  # Resource Group, location, VNet and Subnet details
  resource_group_name  = azurerm_resource_group.test_build.name
  location             = "westeurope"
  virtual_network_name = azurerm_virtual_network.example.name
  subnet_name          = "subnet1"
  virtual_machine_name = "vm-linux"

  # This module support multiple Pre-Defined Linux and Windows Distributions.
  # Check the README.md file for more pre-defined images for Ubuntu, Centos, RedHat.
  # Please make sure to use gen2 images supported VM sizes if you use gen2 distributions
  # Specify `disable_password_authentication = false` to create random admin password
  # Specify a valid password with `admin_password` argument to use your own password 
  # To generate SSH key pair, specify `generate_admin_ssh_key = true`
  # To use existing key pair, specify `admin_ssh_key_data` to a valid SSH public key path.  
  os_flavor               = "linux"
  linux_distribution_name = "ubuntu2004"
  virtual_machine_size    = "Standard_B2s"
  generate_admin_ssh_key  = true
  instances_count         = 2

  # Proxymity placement group, Availability Set and adding Public IP to VM's are optional.
  # remove these argument from module if you dont want to use it.  
  enable_proximity_placement_group = true
  enable_vm_availability_set       = true
  enable_public_ip_address         = true

  # Network Seurity group port allow definitions for each Virtual Machine
  # NSG association to be added automatically for all network interfaces.
  # Remove this NSG rules block, if `existing_network_security_group_id` is specified
  nsg_inbound_rules = [
    {
      name                   = "ssh"
      destination_port_range = "22"
      source_address_prefix  = "*"
    },
    {
      name                   = "http"
      destination_port_range = "80"
      source_address_prefix  = "*"
    },
  ]

  # Boot diagnostics to troubleshoot virtual machines, by default uses managed 
  # To use custom storage account, specify `storage_account_name` with a valid name
  # Passing a `null` value will utilize a Managed Storage Account to store Boot Diagnostics
  enable_boot_diagnostics = true

  # Attach a managed data disk to a Windows/Linux VM's. Possible Storage account type are: 
  # `Standard_LRS`, `StandardSSD_ZRS`, `Premium_LRS`, `Premium_ZRS`, `StandardSSD_LRS`
  # or `UltraSSD_LRS` (UltraSSD_LRS only available in a region that support availability zones)
  # Initialize a new data disk - you need to connect to the VM and run diskmanagemnet or fdisk
  data_disks = [
    {
      name                 = "disk1"
      disk_size_gb         = 100
      storage_account_type = "StandardSSD_LRS"
    },
    {
      name                 = "disk2"
      disk_size_gb         = 200
      storage_account_type = "Standard_LRS"
    }
  ]

  # (Optional) To enable Azure Monitoring and install log analytics agents
  # (Optional) Specify `storage_account_name` to save monitoring logs to storage.   
  log_analytics_workspace_id = azurerm_log_analytics_workspace.la.id

  # Deploy log analytics agents to virtual machine. 
  # Log analytics workspace customer id and primary shared key required.
  deploy_log_analytics_agent                 = true
  log_analytics_customer_id                  = azurerm_log_analytics_workspace.la.workspace_id
  log_analytics_workspace_primary_shared_key = azurerm_log_analytics_workspace.la.primary_shared_key

  # Adding additional TAG's to your Azure resources
  tags = {
    ProjectName  = "demo-project"
    Env          = "dev"
    Owner        = "user@example.com"
    BusinessUnit = "CORP"
    ServiceClass = "Gold"
  }
}

只要添加一个名为create_resource_group的新变量就不会做任何事情,只要后面没有相应的逻辑/代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71423445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档