A Terraform konfigurálása az Azure Cloud Shellben a Bash 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 az Azure-ban a Terraformhoz való használatra történő hitelesítés lehetőségeit.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • A Cloud Shell konfigurálása
  • Aktuális Azure-fiók megjelení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. A Cloud Shell megnyitása

  1. Ha már meg van nyitva egy Cloud Shell-munkamenet, ugorjon a következő szakaszra.

  2. Lépjen az Azure Portalra

  3. Ha szükséges, jelentkezzen be az Azure-előfizetésbe, és módosítsa az Azure-címtárat.

  4. Nyissa meg a Cloud Shellt.

    Open Cloud Shell from the top menu in the Azure portal.

  5. Ha korábban nem használta a Cloud Shellt, konfigurálja a környezeti és tárolási beállításokat.

  6. Válassza ki a parancssori környezetet.

    Select the CLI you want to use in Cloud Shell.

3. A Terraform legújabb verziójának telepítése az Azure Cloud Shellben

A Cloud Shell automatikusan frissül a Terraform legújabb verziójára. A frissítések azonban a kiadást követő néhány héten belül érkeznek. Ez a cikk bemutatja, hogyan töltheti le és telepítheti a Terraform aktuális verzióját.

  1. Határozza meg a Cloud Shellben használt Terraform-verziót.

    terraform version
    
  2. Ha a Cloud Shellben telepített Terraform-verzió nem a legújabb verzió, megjelenik egy üzenet, amely jelzi, hogy a Terraform verziója elavult.

  3. Ha jól használja a megadott verziót, ugorjon a következő szakaszra. Ellenkező esetben folytassa a következő lépésekkel.

  4. Keresse meg a Terraform letöltési oldalát.

  5. Görgessen le a Linux letöltési hivatkozásaihoz.

  6. Vigye az egeret a 64 bites hivatkozásra. Ez a hivatkozás a Cloud Shellhez megfelelő legújabb, 64 bites Linux AMD-verzióhoz készült.

  7. URL-cím másolása.

  8. Futtassa curl, és cserélje le a helyőrzőt az előző lépésBEN szereplő URL-címre.

    curl -O <terraform_download_url>
    
  9. Bontsa ki a fájlt.

    unzip <zip_file_downloaded_in_previous_step>
    
  10. Ha a könyvtár nem létezik, hozzon létre egy névvel ellátott binkönyvtárat.

    mkdir bin
    
  11. Helyezze át a terraform fájlt a bin könyvtárba.

    mv terraform bin/    
    
  12. Zárja be és indítsa újra a Cloud Shellt.

  13. Ellenőrizze, hogy a Terraform letöltött verziója szerepel-e először az elérési úton.

    terraform version
    

4. Ellenőrizze az alapértelmezett Azure-előfizetést

Amikor Microsoft-fiókkal jelentkezik be az Azure Portalra, a rendszer az adott fiók alapértelmezett Azure-előfizetését használja.

A Terraform automatikusan hitelesíti az alapértelmezett Azure-előfizetés adatait.

Futtassa az az account show-t az aktuális Microsoft-fiók és Azure-előfizetés ellenőrzéséhez.

az account show

A Terraformon végzett módosítások a megjelenített Azure-előfizetésben találhatók. Ha ezt szeretné, hagyja ki a cikk többi részét.

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

Figyelem

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

További lépések