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


Rövid útmutató: Azure Container Instance létrehozása nyilvános IP-címmel a Terraform használatával

Az Azure Container Instances segítségével egyszerűen és gyorsan futtathat kiszolgáló nélküli Docker-tárolókat az Azure-ban. Igény szerint üzembe helyezhet alkalmazásokat a tárolópéldányokon, és nem kell teljes körű tárolóvezérlési platformot használnia (amilyen például az Azure Kubernetes Service). Ebben a cikkben egy izolált Docker-tároló üzembe helyezéséhez és a webalkalmazás nyilvános IP-címmel való elérhetővé tételéhez használja a Terraformot .

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" "container_name" {
      length  = 25
      lower   = true
      upper   = false
      special = false
    }
    
    resource "azurerm_container_group" "container" {
      name                = "${var.container_group_name_prefix}-${random_string.container_name.result}"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      ip_address_type     = "Public"
      os_type             = "Linux"
      restart_policy      = var.restart_policy
    
      container {
        name   = "${var.container_name_prefix}-${random_string.container_name.result}"
        image  = var.image
        cpu    = var.cpu_cores
        memory = var.memory_in_gb
    
        ports {
          port     = var.port
          protocol = "TCP"
        }
      }
    }
    
  3. Hozzon létre egy elnevezett outputs.tf fájlt, és szúrja be a következő kódot:

    output "container_ipv4_address" {
      value = azurerm_container_group.container.ip_address
    }
    
  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
      default     = "eastus"
      description = "Location for all resources."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription."
    }
    
    variable "container_group_name_prefix" {
      type        = string
      description = "Prefix of the container group name that's combined with a random value so name is unique in your Azure subscription."
      default     = "acigroup"
    }
    
    variable "container_name_prefix" {
      type        = string
      description = "Prefix of the container name that's combined with a random value so name is unique in your Azure subscription."
      default     = "aci"
    }
    
    variable "image" {
      type        = string
      description = "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
      default     = "mcr.microsoft.com/azuredocs/aci-helloworld"
    }
    
    variable "port" {
      type        = number
      description = "Port to open on the container and the public IP address."
      default     = 80
    }
    
    variable "cpu_cores" {
      type        = number
      description = "The number of CPU cores to allocate to the container."
      default     = 1
    }
    
    variable "memory_in_gb" {
      type        = number
      description = "The amount of memory to allocate to the container in gigabytes."
      default     = 2
    }
    
    variable "restart_policy" {
      type        = string
      description = "The behavior of Azure runtime if container has stopped."
      default     = "Always"
      validation {
        condition     = contains(["Always", "Never", "OnFailure"], var.restart_policy)
        error_message = "The restart_policy must be one of the following: Always, Never, OnFailure."
      }
    }
    

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. A végrehajtási terv alkalmazásakor a Terraform a nyilvános IP-címet adja ki. Az IP-cím ismételt megjelenítéséhez futtassa a Terraform kimenetét.

    terraform output -raw container_ipv4_address
    
  2. Adja meg a minta nyilvános IP-címét a böngésző címsorában.

    Képernyőkép az Azure Container Instances mintalapjáról

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