Введение в Terraform

Завершено

Средство IaC с открытым кодом Terraform позволяет определять и подготавливать облачную инфраструктуру с помощью высокоуровневого языка конфигурации, известного как язык конфигурации HashiCorp (HCL). Terraform кодифицирует инфраструктуру в файлах конфигурации, описывающих требуемое состояние инфраструктуры. Terraform может управлять любой инфраструктурой, например общедоступными облаками, частными облаками и службами SaaS, с помощью поставщиков Terraform.

Поставщики Terraform для инфраструктуры Azure

Несколько поставщиков Terraform позволяют управлять инфраструктурой Azure:

  • AzureRM: управление ресурсами Azure Resource Manager, такими как виртуальные машины, учетные записи хранения и сетевые интерфейсы.
  • AzureAD: управление ресурсами Microsoft Entra, такими как группы, пользователи, субъекты-службы и приложения.
  • AzureDevOps: управление ресурсами Azure DevOps, такими как агенты, репозитории, проекты, конвейеры и запросы.
  • AzAPI: управление ресурсами Azure с помощью API Azure Resource Manager напрямую. Этот поставщик дополняет поставщика AzureRM, позволяя управлять новейшими ресурсами Azure.
  • Azure Stack: управление ресурсами Azure Stack, такими как виртуальные машины, DNS, виртуальные сети и хранилище.

Создание учетной записи хранилища

Все конфигурации Terraform должны содержать provider блок. Следующий код HCL указывает поставщика Azure Resource Manager (azurerm). В расположении storageaccountexamplerg определена группа eastus ресурсов Azure. Учетная запись хранения Azure создается в группе ресурсов. Имя учетной записи хранения — это первые 24 символа числа, созданного с помощью md5 функции.

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

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Запуск кода Terraform

Запустите terraform init , чтобы скачать необходимые модули Azure для управления ресурсами Azure:

terraform init

Выполните команду terraform plan , чтобы определить, какие действия необходимы для создания конфигурации, указанной в файлах конфигурации. При выполнении команды создается план выполнения, но он не применяется. Этот шаблон позволяет проверить, соответствует ли план выполнения ожиданиям, прежде чем вносить изменения в фактические ресурсы.

terraform plan -out main.tfplan

После проверки плана выполнения выполните команду terraform apply , чтобы применить план. Эта команда создает определенные ресурсы.

terraform apply main.tfplan

Проверка учетной записи хранения

Чтобы проверить учетную запись хранения Azure, можно использовать terraform state show команду. Эта команда показывает текущее состояние указанного ресурса.

В случае учетной записи хранения, созданной в этом модуле, команда отображает созданное имя, а также полный список атрибутов учетной записи хранения и их значений.

terraform state show 'azurerm_storage_account.example'

Очистка ресурсов

Если вам больше не нужны ресурсы, созданные в этом модуле, запустите terraform apply с помощью флага -destroy :

terraform plan -destroy -out main.destroy.tfplan

Выполните команду terraform apply , чтобы применить план выполнения:

terraform apply main.destroy.tfplan