Aracılığıyla paylaş


Hızlı Başlangıç: AzAPI Terraform sağlayıcısıyla ilk Azure kaynağınızı dağıtma

Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimlerini kullanarak yapılandırma dosyaları oluşturursunuz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır. Yapılandırma dosyalarınızı oluşturduktan sonra, altyapı değişikliklerinizin dağıtılmadan önce önizlemesini görüntülemenizi sağlayan bir yürütme planı oluşturursunuz. Değişiklikleri doğruladıktan sonra, altyapıyı dağıtmak için yürütme planını uygularsınız.

Bu makalede, AzureRM sağlayıcısının şu anda desteklemediği bir Azure hizmetini yönetmek için AzAPI Terraform sağlayıcısı kullanmayı öğreneceksiniz. Örnek kodda azapi_resourceBir Azure Container Registry kaynağını yönetmek için kullanılır.

  • AzureRM ve AzAPI sağlayıcılarını tanımlama ve yapılandırma
  • Benzersiz ada sahip bir Azure kaynak grubu oluşturmak için AzureRM sağlayıcısını kullanma
  • Aboneliğinize "Microsoft.ContainerRegistry" sağlayıcısını kaydetmek için AzureRM sağlayıcısını kullanın
  • Azure Container Registry kaynağını oluşturmak için AzAPI sağlayıcısını kullanma

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Terraform kodunu uygulama

Not

Bu makalenin örnek kodu Azure Terraform GitHub deposundabulunur. Terraform 'in geçerli ve önceki sürümlerindentest sonuçlarını içeren günlük dosyasını görüntüleyebilirsiniz.

Terraform'un Azure kaynaklarını yönetmek için nasıl kullanılacağını gösteren daha fazla makalesine ve örnek koda bakın

  1. Örnek Terraform kodunu test etmek ve geçerli dizin yapmak için bir dizin oluşturun.

  2. adlı providers.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    terraform {
      required_providers {
        azapi = {
          source = "Azure/azapi"
          version = "~>2.0"
        }
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>4.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. adlı variables.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    
    variable "container_registry_name" {
      type        = string
      default     = ""
      description = "Name of the container registry."
    }
    
  4. adlı main.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    # Create a resource group with a random name.
    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    # Create a user assigned identity resource.
    resource "azurerm_user_assigned_identity" "example" {
      name                = "example"
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
    }
    
    # Create a random name for the container registry.
    resource "random_string" "acr_name" {
      length  = 10
      special = false
      upper   = false
      numeric = false
    }
    
    # Manage a container registry resource.
    resource "azapi_resource" "example" {
      type      = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
      name      = coalesce(var.container_registry_name, random_string.acr_name.result)
      parent_id = azurerm_resource_group.rg.id
    
      location = azurerm_resource_group.rg.location
      identity {
        type         = "SystemAssigned, UserAssigned"
        identity_ids = [azurerm_user_assigned_identity.example.id]
      }
    
      body = {
        sku = {
          name = "Standard"
        }
        properties = {
          adminUserEnabled = true
        }
      }
    
      tags = {
        "Key" = "Value"
      }
    
      response_export_values = ["properties.loginServer", "properties.policies.quarantinePolicy.status"]
    }
    
  5. adlı outputs.tf bir dosya oluşturun ve aşağıdaki kodu ekleyin:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "azure_container_registry_name" {
      value = azapi_resource.example.name
    }
    

Terraform'u başlatma

Terraform dağıtımını başlatmak için terraform init komutunu çalıştırın. Bu komut, Azure kaynaklarınızı yönetmek için gereken Azure sağlayıcısını indirir.

terraform init -upgrade

Önemli noktalar:

  • -upgrade parametresi, gerekli sağlayıcı eklentilerini yapılandırmanın sürüm kısıtlamalarına uygun en yeni sürüme yükseltir.

Terraform yürütme planı oluşturma

Terraform planını çalıştırarak yürütme planı oluşturun.

terraform plan -out main.tfplan

Önemli noktalar:

  • komutu terraform plan bir yürütme planı oluşturur ancak yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar.
  • İsteğe bağlı -out parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin -out kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.

Terraform yürütme planı uygulama

Yürütme planını bulut altyapınıza uygulamak için terraform apply komutunu çalıştırın.

terraform apply main.tfplan

Önemli noktalar:

  • Örnek terraform apply komut, daha önce komutunu çalıştırdığınızı terraform plan -out main.tfplanvarsayar.
  • parametresi için -out farklı bir dosya adı belirttiyseniz, çağrısında terraform applyaynı dosya adını kullanın.
  • parametresini -out kullanmadıysanız, parametresiz olarak çağırın terraform apply .

Sonuçları doğrulama

  1. Kaynak grubu adını alın.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Kapsayıcı kayıt defteri adını alın.

    azure_container_registry_name=$(terraform output -raw azure_container_registry_name)
    
  3. Kapsayıcı kayıt defterini görüntülemek için az acr show çalıştırın.

    az acr show --name $azure_container_registry_name --resource-group $resource_group_name
    

Kaynakları temizleme

Terraform aracılığıyla oluşturulan kaynaklara artık ihtiyacınız kalmadığında aşağıdaki adımları uygulayın:

  1. terraform planını çalıştırın ve bayrağını destroy belirtin.

    terraform plan -destroy -out main.destroy.tfplan
    

    Önemli noktalar:

    • komutu terraform plan bir yürütme planı oluşturur ancak yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar.
    • İsteğe bağlı -out parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin -out kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
  2. Yürütme planını uygulamak için terraform apply komutunu çalıştırın.

    terraform apply main.destroy.tfplan
    

Azure'da Terraform sorunlarını giderme

Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme

Sonraki adımlar