A Terraform telepítése Windows rendszeren az Azure PowerShell 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.

Ez a cikk bemutatja, hogyan kezdheti meg a Terraform használatát az Azure-ban a PowerShell használatával.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • A PowerShell legújabb verziójának telepítése
  • Az új PowerShell Az-modul telepítése
  • Az Azure CLI összetevő telepítése
  • A Terraform telepítése
  • A Terraform és az Azure hitelesítési forgatókönyveinek ismertetése
  • Hitelesítés Microsoft-fiókkal a Cloud Shellből (Bash vagy PowerShell használatával)
  • Hitelesítés Microsoft-fiókkal Windowsról (Bash vagy PowerShell használatával)
  • Szolgáltatásnév létrehozása az Azure CLI használatával
  • Szolgáltatásnév létrehozása az Azure PowerShell használatával
  • Szolgáltatásnév hitelesítő adatainak megadása környezeti változókban
  • Szolgáltatásnév hitelesítő adatainak megadása Terraform-szolgáltatói blokkban

1. A környezet konfigurálása

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.

2. Az Azure PowerShell telepítése

  1. Az Azure-erőforrásokkal való interakciót lehetővé tevő legújabb PowerShell-modul neve Azure PowerShell Az modul. Az Azure PowerShell Az modul használatakor a PowerShell 7 (vagy újabb) az ajánlott verzió minden platformon. Ha telepítve van a PowerShell, a következő parancs megadásával ellenőrizheti a verziót egy PowerShell-parancssorban.

    $PSVersionTable.PSVersion
    
  2. Telepítse a PowerShellt. Ezt a bemutatót a Windows 10-en futó PowerShell 7.2.1 (x64) használatával teszteltük.

3. Az Azure CLI telepítése

Ahhoz , hogy a Terraform hitelesíthesse magát az Azure-ban, telepítenie kell az Azure CLI-t. Ezt a bemutatót az Azure CLI 2.32.0-s verziójával teszteltük.

4. A Terraform telepítése Windowshoz

  1. Töltse le a Terraformot. Ezt a cikket a Terraform 1.1.4-es verziójával teszteltük.

  2. A letöltésből bontsa ki a végrehajtható fájlt egy ön által választott könyvtárba (például c:\terraform).

  3. Frissítse a rendszer globális PATH környezeti változóját, hogy tartalmazza a végrehajtható könyvtárat.

  4. Nyisson meg egy terminálablakot.

  5. Ellenőrizze a globális elérési út konfigurációját a terraform paranccsal.

    terraform -version
    

5. Terraform hitelesítése az Azure-ban

Terraform- és Azure-hitelesítési forgatókönyvek

A Terraform csak az Azure CLI-vel támogatja az Azure-ba történő hitelesítést. Az Azure PowerShell használatával történő hitelesítés nem támogatott. Ezért bár használhatja az Azure PowerShell-modult a Terraform-munka során, először hitelesítenie kell magát az Azure-ban az Azure CLI használatával.

Ez a cikk bemutatja, hogyan hitelesítheti a Terraformot az Azure-ban az alábbi helyzetekben. A Terraform Azure-beli hitelesítésének lehetőségeiről további információt az Azure CLI-vel végzett hitelesítés című témakörben talál.

Hitelesítés az Azure-ban Egy Microsoft-fiókon keresztül

A Microsoft-fiók egy felhasználónév (e-mailhez és hitelesítő adataihoz társítva), amely a Microsoft-szolgáltatások – például az Azure – bejelentkezésére szolgál. Egy Microsoft-fiók társítható egy vagy több Azure-előfizetéshez, és ezek közül az egyik az alapértelmezett.

Az alábbi lépések bemutatják, hogyan:

  • Interaktív bejelentkezés az Azure-ba Microsoft-fiókkal
  • A fiók társított Azure-előfizetéseinek listázása (az alapértelmezettet is beleértve)
  • Állítsa be az aktuális előfizetést.
  1. Nyisson meg egy parancssort, amely hozzáfér az Azure CLI-hez.

  2. Futtassa az bejelentkezést paraméterek nélkül, és kövesse az utasításokat az Azure-ba való bejelentkezéshez.

    az login
    

    Főbb pontok:

    • A sikeres bejelentkezés az login után megjelenik a bejelentkezett Microsoft-fiókhoz társított Azure-előfizetések listája, beleértve az alapértelmezett előfizetést is.
  3. Az aktuális Azure-előfizetés megerősítéséhez futtassa az az account show-t.

    az account show
    
  4. Egy adott Microsoft-fiókhoz tartozó Összes Azure-előfizetés nevének és azonosítójának megtekintéséhez futtassa az az account listát.

    az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
    

    Főbb pontok:

    • Cserélje le a <microsoft_account_email> helyőrzőt arra a Microsoft-fiók e-mail-címére, amelynek Azure-előfizetéseit listázni szeretné.
    • Élő fiókkal – például Hotmail vagy Outlook – előfordulhat, hogy meg kell adnia a teljes e-mail-címet. Ha például az e-mail-címe, admin@hotmail.comelőfordulhat, hogy a helyőrzőt a következőre live.com#admin@hotmail.comkell cserélnie: .
  5. Egy adott Azure-előfizetés használatához futtassa az az account setet.

    az account set --subscription "<subscription_id_or_subscription_name>"
    

    Főbb pontok:

    • Cserélje le a <subscription_id_or_subscription_name> helyőrzőt a használni kívánt előfizetés azonosítójára vagy nevére.
    • A hívás az account set nem jeleníti meg a megadott Azure-előfizetésre való váltás eredményét. Ezzel azonban ellenőrizheti, az account show hogy az azure-előfizetés megváltozott-e.
    • Ha az előző lépésben futtatja a az account list parancsot, láthatja, hogy az alapértelmezett Azure-előfizetés a megadott az account setelőfizetésre módosult.

Egyszerű szolgáltatás létrehozása

Az Azure-szolgáltatásokat ( például a Terraformot) üzembe helyező vagy használó automatizált eszközöknek mindig korlátozott engedélyekkel kell rendelkezniük. Ahelyett, hogy az alkalmazások teljes jogosultsággal rendelkező felhasználóként jelentkezzenek be, az Azure egyszerű szolgáltatásneveket biztosít.

A leggyakoribb minta az, hogy interaktívan bejelentkezik az Azure-ba, létrehoz egy szolgáltatásnevet, teszteli a szolgáltatásnevet, majd ezt a szolgáltatásnevet használja a jövőbeli hitelesítéshez (interaktívan vagy a szkriptekből).

  1. Szolgáltatásnév létrehozásához jelentkezzen be az Azure-ba. Miután egy Microsoft-fiókon keresztül hitelesítést végzett az Azure-ban, térjen vissza ide.

  2. Ha szolgáltatásnevet hoz létre a Git Bashből, állítsa be a környezeti változót MSYS_NO_PATHCONV . (Ez a lépés nem szükséges a Cloud Shell használata esetén.)

    export MSYS_NO_PATHCONV=1    
    

    Főbb pontok:

    • A környezeti változót globálisan (az MSYS_NO_PATHCONV összes terminál-munkamenethez) vagy helyileg (csak az aktuális munkamenethez) állíthatja be. Mivel a szolgáltatásnév létrehozása nem gyakran történik, a minta beállítja az aktuális munkamenet értékét. Ha globálisan szeretné beállítani ezt a környezeti változót, adja hozzá a beállítást a ~/.bashrc fájlhoz.
  3. Szolgáltatásnév létrehozásához futtassa az az ad sp create-for-rbac parancsot.

    az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
    

    Főbb pontok:

    • Lecserélheti a <service-principal-name> környezetet egy egyéni névre, vagy teljesen kihagyhatja a paramétert. Ha kihagyja a paramétert, a szolgáltatásnév az aktuális dátum és idő alapján jön létre.
    • Sikeres befejezés után az ad sp create-for-rbac több értéket is megjelenít. A appIdkövetkező lépésben a , passwordés tenant az értékek lesznek használatban.
    • A jelszó nem kérhető le, ha elveszett. Ezért a jelszót biztonságos helyen kell tárolnia. Ha elfelejti a jelszavát, visszaállíthatja a szolgáltatásnév hitelesítő adatait.
    • Ebben a cikkben egy közreműködői szerepkörrel rendelkező szolgáltatásnevet használunk. A szerepköralapú hozzáférés-vezérlési (RBAC-) szerepkörökről további információt az RBAC: Beépített szerepkörök című témakörben talál.
    • A szolgáltatásnév létrehozásának kimenete bizalmas hitelesítő adatokat tartalmaz. Győződjön meg arról, hogy ezeket a hitelesítő adatokat nem tartalmazza a kódban, vagy nem ellenőrzi a hitelesítő adatokat a forrásvezérlőben.
    • A szolgáltatásnév Azure CLI-vel történő létrehozásakor elérhető lehetőségekről további információt az Azure CLI-vel rendelkező Azure-szolgáltatásnév létrehozása című cikkben talál.

Szolgáltatásnév hitelesítő adatainak megadása környezeti változókban

Miután létrehozott egy egyszerű szolgáltatást, környezeti változókon keresztül megadhatja annak hitelesítő adatait a Terraformban.

  1. Szerkessze a ~/.bashrc fájlt a következő környezeti változók hozzáadásával.

    export ARM_SUBSCRIPTION_ID="<azure_subscription_id>"
    export ARM_TENANT_ID="<azure_subscription_tenant_id>"
    export ARM_CLIENT_ID="<service_principal_appid>"
    export ARM_CLIENT_SECRET="<service_principal_password>"
    
  2. A ~/.bashrc szkript végrehajtásához futtassa source ~/.bashrc (vagy annak rövidített megfelelője . ~/.bashrc). A szkript automatikus futtatásához kiléphet és újra megnyithatja a Cloud Shellt.

    . ~/.bashrc
    
  3. A környezeti változók beállítása után az alábbi módon ellenőrizheti az értékeket:

    printenv | grep ^ARM*
    

Főbb pontok:

  • A környezeti változókhoz hasonlóan az Azure-előfizetési érték Terraform-szkriptből való eléréséhez használja a következő szintaxist: ${env.<environment_variable>} Az érték eléréséhez például adja meg a ARM_SUBSCRIPTION_ID .${env.ARM_SUBSCRIPTION_ID}
  • A Terraform végrehajtási terveinek létrehozása és alkalmazása módosításokat hajt végre a szolgáltatásnévhez társított Azure-előfizetésen. Ez a tény néha zavaró lehet, ha egy Azure-előfizetésbe van bejelentkezve, és a környezeti változók egy második Azure-előfizetésre mutatnak. Tekintsük meg a következő példát, hogy elmagyarázzuk. Tegyük fel, hogy két Azure-előfizetése van: SubA és SubB. Ha az aktuális Azure-előfizetés SubA (a rendszer által az account showmeghatározott), míg a környezeti változók AlB-ra mutatnak, a Terraform által végrehajtott módosítások a SubB-en vannak. Ezért be kell jelentkeznie az AlB-előfizetésbe az Azure CLI-parancsok vagy az Azure PowerShell-parancsok futtatásához a módosítások megtekintéséhez.

Szolgáltatásnév hitelesítő adatainak megadása Terraform-szolgáltatói blokkban

Az Azure-szolgáltatói blokk szintaxist határoz meg, amely lehetővé teszi az Azure-előfizetés hitelesítési adatainak megadását.

terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}

provider "azurerm" {
  features {}

  subscription_id   = "<azure_subscription_id>"
  tenant_id         = "<azure_subscription_tenant_id>"
  client_id         = "<service_principal_appid>"
  client_secret     = "<service_principal_password>"
}

# Your code goes here

Figyelemfelhívás

Az Azure-előfizetés hitelesítő adatainak terraform konfigurációs fájlban való megadása kényelmes lehet , különösen teszteléskor. Nem ajánlott azonban a hitelesítő adatokat olyan világos szöveges fájlban tárolni, amelyet nem megbízható személyek tekinthetnek meg.

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