Első lépések: A Terraform konfigurálása Azure Cloud Shell Bash segítségével

A Terraform lehetővé teszi a felhőalapú infrastruktúra definícióját, előzetes kiadását és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre a HCL szintaxisával. A HCL-szintaxissal megadhatja a felhőszolgáltatót (például az Azure-t) és a felhőinfra infrastruktúráját felhozó elemeket. 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 módosításainak előnézetét az üzembe helyezésük előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezéséhez.

Ez a cikk bemutatja a Terraformmal való használathoz az Azure-ban való hitelesítés lehetőségeit.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • A Cloud Shell
  • Aktuális Azure-fiók megjelenítése
  • Gyakori Terraform- és Azure-hitelesítési forgatókönyvek
  • Hitelesítés egy Microsoft-fiók használatával Cloud Shell (a Bash vagy a PowerShell használatával)
  • Hitelesítés Microsoft-fiók Windows (a Bash vagy a 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 a környezeti változókban
  • Szolgáltatásnév hitelesítő adatainak megadása Egy Terraform-szolgáltató 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. Nyissa meg Cloud Shell

  1. Ha már van Cloud Shell munkamenete, 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.

    Nyissa Cloud Shell elemet a felső menüből a Azure Portal.

  5. Ha még nem használta a Cloud Shell konfigurálja a környezeti és tárolási beállításokat.

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

    Válassza ki a Cloud Shell.

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

Cloud Shell a Terraform legújabb verziójára a kiadástól számított néhány héten belül automatikusan frissül. Ha azonban hamarabb van szüksége a legújabb verzióra, a következő lépésekkel letöltheti és telepítheti a Terraform aktuális verzióját.

  1. Határozza meg a Cloud Shell.

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

  3. Ha megfelelően dolgozik a jelzett verzióval, ugorjon a következő szakaszra. Egyéb esetben folytassa a következő lépésekkel.

  4. Lépjen a Terraform letöltési oldalára.

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

  6. Vigye az egeret a 64 bites hivatkozásra. Ez a legújabb, 64 bites Linux AMD-verzió hivatkozása, amely megfelelő a Cloud Shell.

  7. Másolja az URL-címet.

  8. Futtassa curl a következőt: . Cserélje le a helyőrzőt az előző lépésben lekért 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 nevű bin könyvtárat.

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

    mv terraform bin/    
    
  12. Ellenőrizze, hogy a Terraform letöltött verziója van-e az útvonal első része.

    terraform version
    

4. Az alapértelmezett Azure-előfizetés ellenőrzése

Amikor bejelentkezik a Azure Portal egy Microsoft-fiók, a rendszer az ahhoz a fiókhoz alapértelmezett Azure-előfizetést használja.

A Terraform automatikusan hitelesíti magát az alapértelmezett Azure-előfizetésből származó információk alapján.

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

az account show

A Terraformon keresztül végrehajtott módosítások a megjelenített Azure-előfizetésre fognak módosulni. Ha ezt szeretné, hagyja ki a cikk hátralévő részét.

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

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

A Terraform csak az Azure CLI-n keresztüli azure-hitelesítést támogatja. A hitelesítés a Azure PowerShell nem támogatott. Ezért, bár a Terraform-Azure PowerShell használhatja a Azure PowerShell modult, 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 a következő helyzetekben. A Terraform Azure-ban való hitelesítésének lehetőségére vonatkozó további információkért lásd: Authenticating using the Azure CLI(Hitelesítés az Azure CLI használatával).

Hitelesítés az Azure-ban Microsoft-fiók

A Microsoft-fiók egy olyan felhasználónév (amely egy e-mailhez és annak hitelesítő adataihoz van társítva), amely az azure Microsoft-szolgáltatások be való bejelentkezésre szolgál. A Microsoft-fiók egy vagy több Azure-előfizetéshez is társítható, és az egyik ilyen előfizetés az alapértelmezett.

A következő lépések azt mutatják be, hogyan jelentkezhet be interaktív módon az Azure-ba egy Microsoft-fiók használatával, hogyan listzható a fiókhoz társított Azure-előfizetések (az alapértelmezett értékekkel együtt), és hogyan állíthatja be az aktuális előfizetést.

  1. Nyisson meg egy parancssort, amely hozzáfér az Azure CLI-hez.

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

    az login
    

    Főbb pontok:

    • Sikeres bejelentkezés esetén a megjeleníti a bejelentkezett fiókhoz társított Azure-előfizetések Microsoft-fiók az login alapértelmezett előfizetést is beleértve.
  3. Az aktuális Azure-előfizetés megerősítéséhez futtassa az az account show futtatását.

    az account show
    
  4. Egy adott előfizetés összes Azure-előfizetésének nevének és Microsoft-fiók az az account list futtatásával.

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

    Főbb pontok:

    • Cserélje le a helyőrzőt arra <microsoft_account_email> Microsoft-fiók e-mail-címre, amelynek Azure-előfizetését ki szeretné listni.
    • Élő fiókkal – például hotmail-fiókkal vagy outlookkal – előfordulhat, hogy meg kell adnia a teljes e-mail-címet. Ha például az e-mail-címe , előfordulhat, hogy a helyőrzőt a névre admin@hotmail.com kell live.com#admin@hotmail.com cserélnie.
  5. Egy adott Azure-előfizetést az az account set futtatásával használhat.

    az account set --subscription "<subscription_id_or_subscription_name>"
    

    Főbb pontok:

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

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

Az Azure-szolgáltatásokat – például a Terraformot – üzembe helyező vagy azt felhasználó automatizált eszközöknek mindig korlátozott engedélyekkel kell rendelkezniük. Ahelyett, hogy az alkalmazások teljes körű jogosultsággal rendelkező felhasználóként jelentkeznek be, az Azure szolgáltatásnévket kínál.

A leggyakoribb minta az, hogy interaktívan bejelentkezik az Azure-ba, létrehoz egy szolgáltatásnévt, teszteli a szolgáltatásnévvel, majd ezt a szolgáltatásnévvel használja a későbbi hitelesítéshez (interaktívan vagy a szkriptek használatával).

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

  2. Ha a Git Bashből hoz létre szolgáltatásnévt, állítsa be a MSYS_NO_PATHCONV környezeti változót. (Erre a lépésre nincs szükség, ha a Cloud Shell.)

    export MSYS_NO_PATHCONV=1    
    

    Főbb pontok:

    • A környezeti változót beállíthatja globálisan (minden terminál-munkamenethez) vagy helyileg (csak az MSYS_NO_PATHCONV aktuális munkamenethez). Mivel a szolgáltatásnév létrehozása nem gyakran történik meg, a minta beállítja az aktuális munkamenet értékét. A környezeti változó globális beállításhoz 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 futtatását.

    az ad sp create-for-rbac --name <service_principal_name>
    

    Főbb pontok:

    • A helyére <service-principal-name> a környezet egyéni nevét használhatja, 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.
    • A sikeres befejezés után az ad sp create-for-rbac a több értéket jelenít meg. A appId , password és tenant értékeket a következő lépésben használjuk.
    • A jelszó nem kérhető le, ha elveszett. Ezért a jelszót biztonságos helyen kell tárolnia. Ha elfelejtette a jelszavát, alaphelyzetbe állíthatja a szolgáltatásnév hitelesítő adatait.
    • A Közreműködő szerepkör az alapértelmezett szerepkör, és teljes körű engedélyekkel rendelkezik az Azure-fiók olvasása és írása számára. Ebben a cikkben egy Közreműködő szerepkört betöltő szolgáltatásnév van használva. További információ az Role-Based Access Control (RBAC) és a szerepkörökről: RBAC: Built-in roles (RBAC: Beépített szerepkörök).
    • A szolgáltatásnév létrehozásának kimenete bizalmas hitelesítő adatokat is tartalmaz. Győződjön meg arról, hogy nem foglalja bele ezeket a hitelesítő adatokat a kódba, vagy ellenőrizze a hitelesítő adatokat a forrásvezérlőben.
    • A szolgáltatásnév Azure CLI-val való létrehozásakor elérhető beállításokkal kapcsolatos további információkért tekintse meg az Azure-beli szolgáltatásnév Azure CLI-val való létrehozását.

Egyszerű szolgáltatás hitelesítő adatainak megadása a környezeti változókban

Miután létrehozott egy szolgáltatásnév, a hitelesítő adatait környezeti változók használatával adhatja meg a Terraformnak.

  1. ~/.bashrcSzerkessze a 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 szkript ~/.bashrc végrehajtásához futtassa a source ~/.bashrc következőt: (vagy annak rövidített megfelelője). . ~/.bashrc A szkript automatikus futtatásához kiléphet, Cloud Shell újra megnyithatja a szkriptet.

    . ~/.bashrc
    
  3. A környezeti változók beállítása után a következőképpen ellenőrizheti az értékeiket:

    printenv | grep ^ARM*
    

Fő pontok:

  • Mint minden környezeti változó esetében, az Azure-előfizetés é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 következőt: ${env.ARM_SUBSCRIPTION_ID} .
  • A Terraform végrehajtási terveinek létrehozása és alkalmazása módosításokat tesz a szolgáltatásnévhez társított Azure-előfizetésen. Ez 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. Nézzük meg az alábbi példát, hogy elmagyarázzuk. Tegyük fel, hogy két Azure-előfizetéssel rendelkezik: subA és SubB. Ha az aktuális Azure-előfizetés subA (a használatával határozható meg), míg a környezeti változók a B alcsoportra mutatnak, a Terraform által végrehajtott módosítások a SubB alhálózaton az account show vannak. Ezért be kell jelentkeznie az alhálózati előfizetésbe az Azure CLI-parancsok vagy a Azure PowerShell megtekintéséhez.

Egyszerű szolgáltatás hitelesítő adatainak megadása Egy Terraform-szolgáltató blokkban

Az Azure-szolgáltató blokk olyan szintaxist definiál, amely lehetővé teszi az Azure-előfizetés hitelesítési információinak 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. A hitelesítő adatokat azonban nem ajánlott tiszta szöveges fájlban tárolni, amelyet nem megbízható személyek is megtekintnek.

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

A Terraform Azure-on való használatával kapcsolatos gyakori problémák elhárítása

Következő lépések