使用Terraform构建Azure基础架构

先决条件和目标

在这篇文章中,介绍了如何使用名为Terraform的工具来进行Azure环境的构建。假设读者已经掌握了与Azure相关的基础知识。

image.png

Terraform是什么?

这是由HashiCorp公司提供的IaC(基础设施即代码)工具。简而言之,IaC是将基础设施建设编码化的概念。通过使用IaC,可以获得以下优点。

    • 環境をコードで管理することができ、Git等を用いた管理を行える

 

    誰でも同じ環境を構築することができる

在众多的IaC工具中,Terraform具有可以与各种服务(包括Azure)兼容的能力,并且可以使用相对较短的代码进行描述。因此,它已成为IaC工具中的事实标准。

为环境准备提供参考的网站

在Windows 11上设置wsl2

如何在Windows 11上设置WSL2的步骤可以参考这篇文章:https://dev.classmethod.jp/articles/how-to-setup-wsl2-for-windows11/

在中文中安装terraform。

如何在Ubuntu上安装Terraform

安装 tfenv(terraform 版本管理工具)。

请提供以下选项的中国语言版本:
https://engineer-lifestyle-blog.com/code/terraform-install-tfenv-usage-command-list/

安装az命令

请参阅以下链接,了解如何在Linux上安装Azure CLI:https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-linux?pivots=apt

Terraform的认证

完成安装az命令和terraform之后,将在Azure上对Terraform进行身份验证。通过设置以下4个环境变量,我们可以进行身份验证,因此让我们看一下每个设置值的获取方法,并将它们添加到bashrc文件中。

    • ARM_SUBSCRIPTION_ID

 

    • ARM_TENANT_ID

 

    • ARM_CLIENT_ID

 

    ARM_CLIENT_SECRET

首先,使用az命令登录到Azure。由于会弹出浏览器页面,请进行登录操作。

az login

当您在浏览器上进行登录时,以下结果将在控制台中显示。这些结果将包含您的订阅ID和租户ID等信息。

[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
    "isDefault": true,
    "managedByTenants": [],
    "name": "Azure subscription 1",
    "state": "Enabled",
    "tenantId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "user": {
      "name": "user name",
      "type": "user"
    }
  }
]

使用在可获得的输出中的id项中所记录的订阅ID,执行az ad sp create-for-rbac命令来创建服务主体。

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"

执行上述命令将输出以下结果。

{
  "appId": "cccccccc-cccc-cccc-cccc-cccccccccccc",
  "displayName": "azure-cli-2023-10-15-10-01-05",
  "password": "dddddddddddddddddddddddddddddddddd",
  "tenant": "eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"
}

由于以上已经输出完所需的信息,接下来将设置环境变量。应设置的环境变量及其对应的值如下所示。

環境変数設定値keyARM_SUBSCRIPTION_IDbbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbbidARM_CLIENT_IDcccccccc-cccc-cccc-cccc-ccccccccccccappIdARM_CLIENT_SECRETddddddddddddddddddddddddddddddddddpasswordARM_TENANT_IDeeeeeeee-eeee-eeee-eeee-eeeeeeeeeeeetenant

要进行如下所述的编辑,请在bashrc内追加这些设置。具体来说,要追加以下内容。

export ARM_SUBSCRIPTION_ID="bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
export ARM_CLIENT_ID="cccccccc-cccc-cccc-cccc-cccccccccccc"
export ARM_CLIENT_SECRET="dddddddddddddddddddddddddddddddddd"
export ARM_TENANT_ID="eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee"

在中国,这样设置就完成了。

Terraform的命令

通常在Terraform中,我們會創建以.tf為擴展名的文件。
創建的文件將存放在一個工作區專用的目錄中,並進行對Azure的應用。
要將特定目錄註冊到工作區中,使用以下命令。

terraform init

接下来,一旦.tf文件的部署完成,使用如下命令来审核.tf文件中内容被修改的资源信息。

terraform plan

执行上述命令,如果没有特殊问题,将会将其应用到Azure。反映操作使用以下命令执行。

terraform apply

Terraform语法

本章介绍了按照元素分别编写代码的方法。

创建提供者.

虽然与Azure的资源没有直接关系,但是要使用Terraform,首先需要创建provider(在此例中为provider.tf)。在该provider中,需要记录使用哪个云服务的信息。因此,如果使用相同的云服务,基本上将是相同的文本。对于Azure,可以这样记录。

Terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.0.0"
    }
  }
}

# Configure the Microsoft Azure Provider
provider "azurerm" {
  skip_provider_registration = true # This is only required when the User, Service Principal, or Identity running Terraform lacks the permissions to register Azure Resource Providers.
  features {}
}

创建 Azure 资源

在Azure上创建资源的基本语法如下所示。

resource "リソース名" "任意の名前"{
    設定項目1="設定値1"
    設定項目2="設定値2"
    ...
}

在以下段落中,我们将提供有关每个资源的资源名称、设置项和实际代码流程的信息。此外,我们还会提供官方文档页面的链接。由于本次说明仅涵盖必要的设置项,请根据需要参考官方文档了解其他设置项等。

创建资源组

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group 的以下内容进行释义:

资源名称

蓝色资源组

设定项目
key概要今回の設定値nameリソースグループの名前sample_rglocationリソースグループのregionjapaneast
編碼
resource "azurerm_resource_group" "resource_group" {
  name     = "sample_rg"
  location = "japaneast"
}

创建虚拟网路

创建虚拟网络

请提供一个您首选的用中文本地化的同义句:

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network

请提供中文本地化后的以下信息:

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network

资源名称

蓝色资源管理器虚拟网络

设定项目
key概要今回の設定値nameVirtual Networkの名前sample_vnetlocalVirtual Networkのregionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_nameVirtual Networkをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)address_spaceVirtual Networkのアドレス空間10.0.0.0/16
翻译成中文有很多种方式,以下是其中一种:

代码

resource "azurerm_virtual_network" "virtual_network" {
  name                = "sample_vnet"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
  address_space       = ["10.0.0.0/16"]
}

创建子网络

以下是在中国本地语言中对提供商 “hashicorp/azurerm” 最新版本文档中子网资源的释义:

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/subnet

资源名称

azurerm_subnet: 云蓝色资源管理器子网

设置项目
key概要今回の設定値nameSub Networkの名前public,privateaddress_prefixesアドレスプレフィックス10.0.1.0/24,10.0.2.0/24resource_group_nameSub Networkをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)virtual_network_nameSub NetworkをどのVirtual Networkに作成するかsample_vnet(上で作成したvirtual networkのnameを参照させる)service_endpointsSub Networkに関連付けるサービス エンドポイントのリストMicrosoft.Sql
代码
resource "azurerm_subnet" "public" {
  name                 = "public"
  resource_group_name  = azurerm_resource_group.resource_group.name
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  address_prefixes     = ["10.0.1.0/24"]
}
resource "azurerm_subnet" "private" {
  name                 = "private"
  resource_group_name  = azurerm_resource_group.resource_group.name
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  address_prefixes     = ["10.0.2.0/24"]
  service_endpoints    = ["Microsoft.Sql"]
}

创建网络接口

以下是对于 https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface 的中文翻译:
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface 可以被代替为:
“注册表.terraform.io”。提供者是 “hashicorp/azurerm” 的最新版本。文档资源为 “network_interface”。

资源名称

AzureRM 网络接口

设定项目
key概要今回の設定値nameNetwork Interfaceの名前network_interfacelocationNetwork Interfaceのregionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_nameNetwork Interfaceをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)ip_configurationIPの構成設定以下参照

IP配置

key概要今回の設定値nameIP Configurationの名前ip_configurationsubnet_idどのSub Networkに所属させるか上で作成したSub Network(private)のidを参照させるprivate_ip_address_allocationIPアドレスを明示的に割り当てるかDynamic
程式碼
resource "azurerm_network_interface" "network_interface" {
  name                = "network_interface"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name

  ip_configuration {
    name                          = "ip_configuration"
    subnet_id                     = azurerm_subnet.private.id
    private_ip_address_allocation = "Dynamic"
  }
}

创建网络安全组

创建网络安全组

请提供原生中文版本的释义,只需要一个选项:
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_security_group

资源名称

azurerm_network_security_group可以用中文重新表达为:蓝色微软云网络安全组。

设定项目
key概要今回の設定値nameNetwork Interfaceの名前network_security_grouplocationNetwork Interfaceのregionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_nameNetwork Security Groupをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)
请提供更多背景资料或上下文,以便我可以更准确地为您提供中文翻译。
resource "azurerm_network_security_group" "network_security_group" {
  name                = "network_security_group"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
}

创建网络安全规则

请提供一个中国语言选项,这样我才能够帮您完成中文的重新表述。

目标:用中文将以下句子进行释义(仅需一种选项):

リソース名

释义:资源名称

AzureRM的网络安全规则

设定项目
key概要今回の設定値nameNetwork Security Ruleの名前RDP,HTTPpriorityルールの優先度100,110direction受信か送信かInboundaccessアクセス許可AllowprotocolプロトコルTcpsource_port_rangeどのポートから受信するか*destination_port_rangeどのポートに送信するか3389,80source_address_prefixどのアドレスから受信するか*destination_address_prefixどのアドレスへ送信するか*resource_group_nameNetwork Security Ruleをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)network_security_group_nameNetwork Security RuleをどのNetwork Security Groupに適用するかnetwork_security_group(上で作成したnetwork_security_groupのnameを参照させる)
翻译成中文为:代码
resource "azurerm_network_security_rule" "rdp" {
  name                        = "RDP"
  priority                    = 100
  direction                   = "Inbound"
  access                      = "Allow"
  protocol                    = "Tcp"
  source_port_range           = "*"
  destination_port_range      = "3389"
  source_address_prefix       = "*"
  destination_address_prefix  = "*"
  resource_group_name         = azurerm_resource_group.resource_group.name
  network_security_group_name = azurerm_network_security_group.network_security_group.name
}
resource "azurerm_network_security_rule" "http" {
  name                        = "HTTP"
  priority                    = 110
  direction                   = "Inbound"
  access                      = "Allow"
  protocol                    = "Tcp"
  source_port_range           = "*"
  destination_port_range      = "80"
  source_address_prefix       = "*"
  destination_address_prefix  = "*"
  resource_group_name         = azurerm_resource_group.resource_group.name
  network_security_group_name = azurerm_network_security_group.network_security_group.name
}

创建网络接口 – 网络安全组的关联

以下是链接到官方文档的有效网址:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface_security_group_association。

资源名称

AzureRM_网络接口安全组关联

设定项目
key概要今回の設定値network_interface_id関連付けを行うNetwork InterfaceのID上で作成したNetwork Interfaceのidを参照させるnetwork_security_group_id関連付けを行うNetwork Security GroupのID上で作成したNetwork Security Groupのidを参照させる
翻译为中文: 代码
resource "azurerm_network_interface_security_group_association" "network_interface_security_group_association" {
  network_interface_id      = azurerm_network_interface.network_interface.id
  network_security_group_id = azurerm_network_security_group.network_security_group.id
}

创建虚拟机

创建虚拟机

以下是`https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/windows_virtual_machine`的原文。

请提供一种中文表达方式。

资源名称

AzureRM的Windows虚拟机

设定项目
key概要今回の設定値nameVirtual Machineの名前virtual_machineresource_group_nameVirtual Machineをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)locationVirtual Machineのregionjapaneast(上で作成したresource groupのlocalを参照させる)sizeAzureのSKUStandard_D2s_v3admin_username管理者権限ユーザの名前adminadmin_password管理者権限ユーザのパスワードPasswordnetwork_interface_idsどのネットワークインターフェースに割り当てるか上で作成したNetwork Interfaceのidを参照させるos_disk-以下参照source_image_reference-以下参照

操作系统硬盘

key概要今回の設定値cachingOS ディスクに使用するキャッシュのタイプReadWritestorage_account_typeOS ディスクをバックアップするストレージアカウントのタイプStandard_LRS

图片来源参考

key概要今回の設定値publisherVirtual Machineの作成に使用されるイメージの発行者MicrosoftWindowsServerofferVirtual Machineの作成に使用されるイメージのオファーWindowsServerskuVirtual Machineの作成に使用されるイメージのSKU2019-DatacenterversionVirtual Machineの作成に使用されるイメージのバージョンlatest
代码 (Mandarin Chinese)
resource "azurerm_windows_virtual_machine" "virtual_machine" {
  name                = "virtual_machine"
  resource_group_name = azurerm_resource_group.resource_group.name
  location            = azurerm_resource_group.resource_group.location
  size                = "Standard_D2s_v3"
  admin_username      = "admin"
  admin_password      = "Password"
  network_interface_ids = [
    azurerm_network_interface.network_interface.id,
  ]

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2019-Datacenter"
    version   = "latest"
  }
}

创建虚拟机的扩展功能

请参阅此链接以获取有关虚拟机扩展的最新信息:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_machine_extension

资源名称

Azure 虚拟机扩展

设置项目
key概要今回の設定値nameVirtual Machine拡張ピアリングの名前install-iisvirtual_machine_idVirtual Machineの ID上で作成したVirtual Machineのidを参照させるpublisher拡張機能の発行者Microsoft.Computetype拡張機能の種類CustomScriptExtensiontype_handler_version使用する拡張機能のバージョン1.9.5settings拡張機能に渡される設定-
代码 (daima)
resource "azurerm_virtual_machine_extension" "virtual_machine_extension" {
  name                 = "install-iis"
  virtual_machine_id   = azurerm_windows_virtual_machine.virtual_machine.id
  publisher            = "Microsoft.Compute"
  type                 = "CustomScriptExtension"
  type_handler_version = "1.9"

  settings = <<SETTINGS
 {
    "commandToExecute": "powershell -ExecutionPolicy Unrestricted Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -IncludeManagementTools"
 }
SETTINGS
}

创建公共IP

以下是对网址 “https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/public_ip” 的中文本地化改述版本:

请参考网址 “https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/public_ip”,其中包含有关公共 IP 在 Terraform 中的使用的详细文档。

资源名称

Azure资源管理公共IP

设置项目
key概要今回の設定値namePublic IPの名前public_iplocationPublic IPのresgionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_namePublic IPをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)allocation_methodIPアドレスの割り当て方法StaticskuPublic IPのSKUStandard
代码 (daima)
resource "azurerm_public_ip" "public_ip" {
  name                = "public_ip"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
  allocation_method   = "Static"
  sku                 = "Standard"
}

创建堡垒

以下是对于 Terraform 中最新版本的 azurerm 提供程序所提供的 bastion_host 资源的简要介绍:

资源名称

蓝色云强制托管主机

设定项目
key概要今回の設定値nameBastionの名前bastion_hostlocationBastionのregionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_nameBastionをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)ip_configuration-以下参照

IP配置

key概要今回の設定値nameIP構成の名前bas_configurationsubnet_idbastionを作成するSub Network新規作成したSubNet(bastion)のidを参照させるpublic_ip_address_idbastionに関連付けるPublic IPアドレス上で作成したパブリックIPのidを参照させる
代码

我们正在创建Sub Network,其中包括Bastion所属的部分。

resource "azurerm_bastion_host" "bastion_host" {
  name                = "bastion_host"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name

  ip_configuration {
    name                 = "bas_configuration"
    subnet_id            = azurerm_subnet.bastion.id
    public_ip_address_id = azurerm_public_ip.public_ip.id
  }
}
resource "azurerm_subnet" "bastion" {
  name                 = "AzureBastionSubnet"
  resource_group_name  = azurerm_resource_group.resource_group.name
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  address_prefixes     = ["10.0.3.0/27"]
}

创建负载均衡器

创建负载均衡器

请看此链接:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/lb

资源名称

蓝绿环境负载均衡器

设定项目
key概要今回の設定値nameLoad Balancerの名前LoadBalancerlocationLoad Balancerのregionjapaneast(上で作成したresource groupのlocalを参照させる)resource_group_nameLoad Balancerどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)frontend_ip_configuration-以下参照

前端IP配置

key概要今回の設定値nameフロントエンドIP構成の名前PublicIPAddresspublic_ip_address_idLoad Balancerに関連付ける必要があるPublic IPアドレスのID新規作成したPublic IP(public_ip_lb)のidを参照させる
代码 (daima)

同时,我们正在创建与负载均衡器相关的公共IP。

resource "azurerm_lb" "lb" {
  name                = "LoadBalancer"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name

  frontend_ip_configuration {
    name                 = "PublicIPAddress"
    public_ip_address_id = azurerm_public_ip.public_ip_lb.id
  }
}

resource "azurerm_public_ip" "public_ip_lb" {
  name                = "public_ip"
  location            = azurerm_resource_group.resource_group.location
  resource_group_name = azurerm_resource_group.resource_group.name
  allocation_method   = "Static"
  sku                 = "Standard"
}

创建后端地址池。

icorp/azurerm/latest/docs/resources/lb_backend_address_pool 可用性集群/ azurerm/最新/ docs/资源/负载均衡器 后端地址池

资源名称

云蓝后端地址池

设定项目
key概要今回の設定値loadbalancer_idBackend Address Poolを作成するLoad BalancerのID上で作成したLoad Balancerのidを参照させるnameBackend Address Poolの名前lb_backend_address_pool
代码 (Mandarin Chinese: mǎ)
resource "azurerm_lb_backend_address_pool" "lb_backend_address_pool" {
  loadbalancer_id = azurerm_lb.example.id
  name            = "lb_backend_address_pool"
}

创建与后端地址池相关联

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface_backend_address_pool_association 的原文有关于网络接口后端地址池关联的文档。

资源名称

网络界面后端地址池关联

设置项目
key概要今回の設定値network_interface_idNetwork InterfaceのID上で作成したNetwork Interfaceのidを参照させるip_configuration_nametmpconfigurationbackend_address_pool_idNetwork Interfaceが接続されるBackend Address PoolのID上で作成したBackend Address Poolのidを参照させる
代码 (Mandarin Chinese)
resource "azurerm_network_interface_backend_address_pool_association" "nibapa" {
  network_interface_id    = azurerm_network_interface.network_interface.id
  ip_configuration_name   = "configuration"
  backend_address_pool_id = azurerm_lb_backend_address_pool.lb_backend_address_pool.id
}

创建正常性探针

请提供一个任意的选项。

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/lb_probe 翻译成中文为:

资源名称

AzureRM负载均衡探测

设置选项
key概要今回の設定値loadbalancer_idNATルールを作成するLoad BalancerのID上で作成したLoad Balancerのidを参照させるnameprobeの名前lb-probeportprobeがBackend Endpointにクエリを実行するポート22
翻译成中文:代码
resource "azurerm_lb_probe" "lb-probe" {
  loadbalancer_id = azurerm_lb.lb.id
  name            = "lb-probe"
  port            = 80
}

制定负载平衡规则

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/lb_rule 的内容进行翻译如下:

请参考以下链接,了解有关 lb_rule 的详细信息:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/lb_rule

资源名称

Azure负载均衡规则

设定项目
key概要今回の設定値loadbalancer_idルールを作成するLoad BalancerのID上で作成したLoad Balancerのidを参照させるname負荷分散規則の名前LBRuleprotocol外部EndpointのトランスポートプロトコルTcpfrontend_port外部Endpointのポート80backend_portEndpointの内部接続に使用されるポート80backend_address_pool_idsこの負荷分散規則が動作するBackend Address PoolのID上で作成したBackend Address Poolのidを参照させるfrontend_ip_configuration_nameルールが関連付けられているフロントエンドIP構成の名前PublicIPAddressprobe_idこの負荷分散規則で使用されるprobeのID上で作成したprobeのidを参照させる
代码 (daima)
resource "azurerm_lb_rule" "lb_rule" {
  loadbalancer_id                = azurerm_lb.lb.id
  name                           = "LBRule"
  protocol                       = "Tcp"
  frontend_port                  = 80
  backend_port                   = 80
  backend_address_pool_ids       = azurerm_lb_backend_address_pool.lb_backend_address_pool.id
  frontend_ip_configuration_name = "PublicIPAddress"
  probe_id                       = azurerm_lb_probe.lb-probe.id
}

创建SQL Server

创建服务器

请使用以下选项来本地化汉语释义:
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/sql_server

请参阅此链接了解有关 Terraform 的 AzureRM 插件中 SQL Server 资源的最新文档。

资源名称

蓝色资源管理器 SQL 服务器

设定项目
key概要今回の設定値nameSQL Serverの名前sqlserverresource_group_nameSQL Serverをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)locationSQL Serverのregionjapaneast(上で作成したresource groupのlocalを参照させる)versionServerのバージョン12.0administrator_loginServerの管理者のログイン名adminadministrator_login_passwordユーザーに関連付けられたパスワードPassword
翻译的选项:程式码、代码、编码
resource "azurerm_sql_server" "sql_server" {
  name                         = "sqlserver"
  resource_group_name          = azurerm_resource_group.resource_group.name
  location                     = azurerm_resource_group.resource_group.location
  version                      = "12.0"
  administrator_login          = "admin"
  administrator_login_password = "Password"
}

创建防火墙

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/sql_firewall_rule的原文是:

资源名称

azurerm_sql_firewall_rule 翻译成中文可以是 “AzureRM SQL 防火墙规则”。

设定项目
key概要今回の設定値nameFirewall Ruleの名前FirewallRuleresource_group_nameFirewall Ruleをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)server_nameFirewall Ruleを作成するSQL Serverの名前上で作成したSQL Serverのnameを参照させるstart_ip_addressFirewall通過を許可する開始IPアドレス0.0.0.0end_ip_addressFirewall通過を許可する終了IPアドレス0.0.0.0
源代码
resource "azurerm_sql_firewall_rule" "sql_firewall_rule" {
  name                = "FirewallRule"
  resource_group_name = azurerm_resource_group.resource_group.name
  server_name         = azurerm_sql_server.sql_server.name
  start_ip_address    = "0.0.0.0"
  end_ip_address      = "0.0.0.0"
}

创建数据库

请提供一种最新文档、资源和云提供者的 Terraform 配置的方法,以创建 Azure 数据库。

资源名称

云海蓝 SQL 数据库

设定项目
key概要今回の設定値nameDatabaseの名前sqldatabaseresource_group_nameDatabaseをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)locationDatabaseのregionjapaneast(上で作成したresource groupのlocalを参照させる)server_nameDatabaseを作成するSQL Serverの名前上で作成したSQL Serverのnameを参照させる
代码 (má
resource "azurerm_sql_database" "sql_database" {
  name                = "sqldatabase"
  resource_group_name = azurerm_resource_group.resource_group.name
  location            = azurerm_resource_group.resource_group.location
  server_name         = azurerm_sql_server.sql_server.name
}

创建服务终点

请提供以下网址对应的最新文档:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/sql_virtual_network_rule

资源名称

azurerm_sql_virtual_network_rule: 蓝绿色SQL虚拟网络规则

设置选项
key概要今回の設定値nameSQL Virtual Network Ruleの名前sql-vnet-ruleresource_group_nameSQL Virtual Network Ruleをどのリソースグループ上に作成するかsample_rg(上で作成したresource groupのnameを参照させる)server_nameSQL Virtual Network Ruleが適用されるSQL Serverの名前上で作成したSQL Serverのnameを参照させるsubnet_idSQL Serverが接続されるSub NetworkのID上で作成したSub Network(private)のidを参照させる
程式碼
resource "azurerm_sql_virtual_network_rule" "sql_virtual_network_rule" {
  name                = "sql-vnet-rule"
  resource_group_name = azurerm_resource_group.resource_group.name
  server_name         = azurerm_sql_server.sql_server.name
  subnet_id           = azurerm_subnet.private.id
}

做完

根据上述步骤创建文件,然后执行terraform apply命令,即可在Azure上完成所需的配置。

最终

在本文中,我们尝试使用Terraform在Azure上构建环境。在实际运营中,我们会使用变量和模块化,但是这次我们只是进行了创建资源的操作。
我认为你可能已经大体理解了基本的使用方法,但是对于其他信息,如果有需要,请参考官方网站。
另外,如果文章中有错误,请在评论中告知我。

bannerAds