Megosztás a következőn keresztül:


Rövid útmutató: Azure CDN-profil és -végpont létrehozása a Terraform használatával

Fontos

A Microsofttól (klasszikus) származó Azure CDN Standard 2027. szeptember 30-án megszűnik. A szolgáltatáskimaradások elkerülése érdekében fontos, hogy az Azure CDN Standardot 2027. szeptember 30-ig migrálja a Microsoft (klasszikus) profiljaiból az Azure Front Door Standard vagy a Premium szintre. További információ: Azure CDN Standard a Microsoft (klasszikus) kivonásáról.

Az Edgio-ból származó Azure CDN 2025. január 15-én megszűnt. További információ: Azure CDN az Edgio kivonásáról – gyakori kérdések.

Ez a cikk bemutatja, hogyan hozhat létre Azure CDN-profilt és -végpontot a Terraform használatával a Terraform használatával.

A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

Előfeltételek

A Terraform-kód implementálása

Feljegyzés

A cikk mintakódja az Azure Terraform GitHub-adattárban található. Megtekintheti a Terraform aktuális és korábbi verzióinak teszteredményeit tartalmazó naplófájlt.

További cikkek és mintakód, amelyek bemutatják, hogyan használható a Terraform az Azure-erőforrások kezelésére

  1. Hozzon létre egy könyvtárat, amelyben tesztelheti és futtathatja a Terraform-mintakódot, és az aktuális könyvtárá teheti.

  2. Hozzon létre egy elnevezett main.tf fájlt, és szúrja be a következő kódot:

    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = random_pet.rg_name.id
      location = var.resource_group_location
    }
    
    resource "random_string" "aazurerm_cdn_profile_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_cdn_profile" "profile" {
      name                = "profile-${random_string.azurerm_cdn_endpoint_name.result}"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      sku                 = var.cdn_sku
    }
    
    resource "random_string" "azurerm_cdn_endpoint_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_cdn_endpoint" "endpoint" {
      name                          = "endpoint-${random_string.azurerm_cdn_endpoint_name.result}"
      profile_name                  = azurerm_cdn_profile.profile.name
      location                      = azurerm_resource_group.rg.location
      resource_group_name           = azurerm_resource_group.rg.name
      is_http_allowed               = true
      is_https_allowed              = true
      querystring_caching_behaviour = "IgnoreQueryString"
      is_compression_enabled        = true
      content_types_to_compress = [
        "application/eot",
        "application/font",
        "application/font-sfnt",
        "application/javascript",
        "application/json",
        "application/opentype",
        "application/otf",
        "application/pkcs7-mime",
        "application/truetype",
        "application/ttf",
        "application/vnd.ms-fontobject",
        "application/xhtml+xml",
        "application/xml",
        "application/xml+rss",
        "application/x-font-opentype",
        "application/x-font-truetype",
        "application/x-font-ttf",
        "application/x-httpd-cgi",
        "application/x-javascript",
        "application/x-mpegurl",
        "application/x-opentype",
        "application/x-otf",
        "application/x-perl",
        "application/x-ttf",
        "font/eot",
        "font/ttf",
        "font/otf",
        "font/opentype",
        "image/svg+xml",
        "text/css",
        "text/csv",
        "text/html",
        "text/javascript",
        "text/js",
        "text/plain",
        "text/richtext",
        "text/tab-separated-values",
        "text/xml",
        "text/x-script",
        "text/x-component",
        "text/x-java-source",
      ]
    
      origin {
        name      = "origin1"
        host_name = var.origin_url
      }
    }
    
  3. Hozzon létre egy elnevezett outputs.tf fájlt, és szúrja be a következő kódot:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "cdn_profile_name" {
      value = azurerm_cdn_profile.profile.name
    }
    
    output "cdn_endpoint_endpoint_name" {
      value = azurerm_cdn_endpoint.endpoint.name
    }
    
    output "cdn_endpoint_fqdn" {
      value = azurerm_cdn_endpoint.endpoint.fqdn
    }
    
  4. Hozzon létre egy elnevezett providers.tf fájlt, és szúrja be a következő kódot:

    terraform {
      required_version = ">=1.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    provider "azurerm" {
      features {}
    }
    
  5. Hozzon létre egy elnevezett variables.tf fájlt, és szúrja be a következő kódot:

    variable "resource_group_location" {
      type        = string
      description = "Location for all resources."
      default     = "eastus"
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
      default     = "rg"
    }
    
    variable "origin_url" {
      type        = string
      description = "Url of the origin."
      default     = "www.contoso.com"
    }
    
    variable "cdn_sku" {
      type        = string
      description = "CDN SKU names."
      default     = "Standard_Microsoft"
      validation {
        condition     = contains(["Standard_Akamai", "Standard_Microsoft", "Standard_Verizon", "Premium_Verizon"], var.cdn_sku)
        error_message = "The cdn_sku must be one of the following: Standard_Akamai, Standard_Microsoft, Standard_Verizon, Premium_Verizon."
      }
    }
    

A Terraform inicializálása

Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.

terraform init -upgrade

Főbb pontok:

  • A -upgrade paraméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.

Terraform végrehajtási terv létrehozása

Végrehajtási terv létrehozásához futtassa a Terraform-tervet .

terraform plan -out main.tfplan

Főbb pontok:

  • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
  • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. -out A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.

Terraform végrehajtási terv alkalmazása

A terraform futtatásával alkalmazza a végrehajtási tervet a felhőinfrastruktúrára.

terraform apply main.tfplan

Főbb pontok:

  • A példaparancs terraform apply feltételezi, hogy korábban futtatott terraform plan -out main.tfplan.
  • Ha másik fájlnevet adott meg a -out paraméterhez, használja ugyanazt a fájlnevet a hívásban terraform apply.
  • Ha nem használta a paramétert -out , hívjon terraform apply paraméterek nélkül.

Az eredmények ellenőrzése

  1. Kérje le az Azure-erőforráscsoport nevét, amelyben az Azure CDN-profil és a végpont létre lett hozva.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Kérje le a CDN-profil nevét.

    cdn_profile_name=$(terraform output -raw cdn_profile_name)
    
  3. Kérje le a CDN-végpont nevét.

    cdn_endpoint_endpoint_name=$(terraform output -raw cdn_endpoint_endpoint_name)
    
  4. Futtassa az az cdn custom-domain show-t a cikkben létrehozott egyéni tartomány részleteinek megjelenítéséhez.

    az cdn endpoint show --resource-group $resource_group_name \
                         --profile-name $cdn_profile_name \
                         --name $cdn_endpoint_endpoint_name
    

Az erőforrások eltávolítása

Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:

  1. Futtassa a Terraform-tervet , és adja meg a jelölőt destroy .

    terraform plan -destroy -out main.destroy.tfplan
    

    Főbb pontok:

    • A terraform plan parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat.
    • Az opcionális -out paraméter lehetővé teszi a terv kimeneti fájljának megadását. -out A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
  2. A végrehajtási terv alkalmazásához futtassa a terraformát .

    terraform apply main.destroy.tfplan
    

A Terraform hibaelhárítása az Azure-ban

A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása

Következő lépések