Ověření Terraformu v Azure

Terraform umožňuje definici, verzi Preview a nasazení cloudové infrastruktury. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe seznamu HCL umožňuje zadat poskytovatele cloudu , například Azure, a prvky, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů vytvoříte plán provádění, který vám umožní zobrazit náhled změn infrastruktury před jejich nasazením. Jakmile ověříte změny, použijete plán provádění k nasazení infrastruktury.

Pokud chcete použít příkazy Terraformu pro vaše předplatné Azure, musíte nejprve ověřit Terraform pro toto předplatné. Tento článek se zabývá některými běžnými scénáři ověřování v Azure.

V tomto článku získáte informace o těchto tématech:

  • Vysvětlení běžných scénářů ověřování Terraformu a Azure
  • Ověřování prostřednictvím účtu Microsoft z Cloud Shellu (pomocí Bash nebo PowerShellu)
  • Ověřování pomocí účtu Microsoft z Windows (pomocí Bash nebo PowerShellu)
  • Vytvoření instančního objektu pomocí Azure CLI
  • Vytvoření instančního objektu s využitím Azure PowerShellu
  • Zadání přihlašovacích údajů instančního objektu v proměnných prostředí
  • Zadání přihlašovacích údajů instančního objektu v bloku zprostředkovatele Terraformu

1. Konfigurace prostředí

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

2. Ověření Terraformu v Azure

Scénáře ověřování Terraformu a Azure

Terraform podporuje ověřování pouze v Azure prostřednictvím Azure CLI. Ověřování pomocí Azure PowerShellu se nepodporuje. Modul Azure PowerShellu proto můžete použít při práci Terraformu, musíte se nejdřív ověřit v Azure pomocí Azure CLI.

Tento článek vysvětluje, jak ověřit Terraform v Azure pro následující scénáře. Další informace o možnostech ověřování Terraformu v Azure najdete v tématu Ověřování pomocí Azure CLI.

Ověřování v Azure pomocí účtu Microsoft

Účet Microsoft je uživatelské jméno (přidružené k e-mailu a jeho přihlašovacím údajům), které slouží k přihlášení k služby Microsoft , jako je Azure. Účet Microsoft může být přidružený k jednomu nebo několika předplatným Azure, přičemž jedno z těchto předplatných je výchozí.

Následující kroky ukazují, jak:

  • Interaktivní přihlášení k Azure pomocí účtu Microsoft
  • Výpis přidružených předplatných Azure účtu (včetně výchozího)
  • Nastavte aktuální předplatné.
  1. Otevřete příkazový řádek, který má přístup k Azure CLI.

  2. Spusťte az login bez jakýchkoli parametrů a postupujte podle pokynů pro přihlášení k Azure.

    az login
    

    Klíčové body:

    • Po úspěšném přihlášení az login se zobrazí seznam předplatných Azure přidružených k přihlášeným účtům Microsoft, včetně výchozího předplatného.
  3. Pokud chcete potvrdit aktuální předplatné Azure, spusťte příkaz az account show.

    az account show
    
  4. Pokud chcete zobrazit všechny názvy a ID předplatných Azure pro konkrétní účet Microsoft, spusťte příkaz az account list.

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

    Klíčové body:

    • <microsoft_account_email> Zástupný symbol nahraďte e-mailovou adresou účtu Microsoft, jejíž předplatná Azure chcete vypsat.
    • U účtu Live , jako je hotmail nebo Outlook, možná budete muset zadat plně kvalifikovanou e-mailovou adresu. Pokud je admin@hotmail.comnapříklad vaše e-mailová adresa , možná budete muset zástupný symbol nahradit znakem live.com#admin@hotmail.com.
  5. Pokud chcete použít konkrétní předplatné Azure, spusťte příkaz az account set.

    az account set --subscription "<subscription_id_or_subscription_name>"
    

    Klíčové body:

    • <subscription_id_or_subscription_name> Zástupný symbol nahraďte ID nebo názvem předplatného, které chcete použít.
    • Volání az account set nezobrazuje výsledky přechodu na zadané předplatné Azure. Můžete ale použít az account show k potvrzení, že se aktuální předplatné Azure změnilo.
    • Pokud spustíte az account list příkaz z předchozího kroku, uvidíte, že se výchozí předplatné Azure změnilo na předplatné, které az account setjste zadali .

Vytvoření instančního objektu služby

Automatizované nástroje, které nasazují nebo používají služby Azure , jako je Terraform, by měly mít vždy omezená oprávnění. Místo toho, aby se aplikace přihlašovaly jako plně privilegovaný uživatel, Azure nabízí instanční objekty.

Nejběžnějším vzorem je interaktivní přihlášení k Azure, vytvoření instančního objektu, otestování instančního objektu a následné použití instančního objektu pro budoucí ověřování (interaktivně nebo z vašich skriptů).

  1. Pokud chcete vytvořit instanční objekt, přihlaste se k Azure. Po ověření v Azure prostřednictvím účtu Microsoft se sem vraťte.

  2. Pokud vytváříte instanční objekt z Git Bash, nastavte proměnnou MSYS_NO_PATHCONV prostředí. (Tento krok není nutný, pokud používáte Cloud Shell.)

    export MSYS_NO_PATHCONV=1    
    

    Klíčové body:

    • Proměnnou MSYS_NO_PATHCONV prostředí můžete nastavit globálně (pro všechny terminálové relace) nebo místně (pouze pro aktuální relaci). Vzhledem k tomu, že vytvoření instančního objektu není něco, co často děláte, ukázka nastaví hodnotu pro aktuální relaci. Pokud chcete tuto proměnnou prostředí nastavit globálně, přidejte toto nastavení do ~/.bashrc souboru.
  3. Pokud chcete vytvořit instanční objekt, spusťte příkaz az ad sp create-for-rbac.

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

    Klíčové body:

    • Parametr můžete nahradit <service-principal-name> vlastním názvem vašeho prostředí nebo ho úplně vynechat. Pokud parametr vynecháte, vygeneruje se hlavní název služby na základě aktuálního data a času.
    • Po úspěšném dokončení se az ad sp create-for-rbac zobrazí několik hodnot. Hodnoty appIda tenant hodnoty passwordse používají v dalším kroku.
    • Heslo nelze načíst, pokud dojde ke ztrátě. Heslo byste proto měli uložit na bezpečném místě. Pokud heslo zapomenete, můžete resetovat přihlašovací údaje instančního objektu.
    • V tomto článku se používá instanční objekt s rolí Přispěvatel . Další informace o rolích řízení přístupu na základě role (RBAC) najdete v tématu RBAC: Předdefinované role.
    • Výstup z vytvoření instančního objektu zahrnuje citlivé přihlašovací údaje. Ujistěte se, že tyto přihlašovací údaje nezahrnete do kódu, nebo zkontrolujte přihlašovací údaje do správy zdrojového kódu.
    • Další informace o možnostech při vytváření instančního objektu pomocí Azure CLI najdete v článku Vytvoření instančního objektu Azure pomocí Azure CLI.

Zadání přihlašovacích údajů instančního objektu v proměnných prostředí

Po vytvoření instančního objektu můžete zadat jeho přihlašovací údaje k Terraformu prostřednictvím proměnných prostředí.

  1. ~/.bashrc Upravte soubor přidáním následujících proměnných prostředí.

    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. Pokud chcete spustit ~/.bashrc skript, spusťte source ~/.bashrc (nebo jeho zkrácený ekvivalent . ~/.bashrc). Můžete také ukončit a znovu otevřít Cloud Shell, aby se skript spustil automaticky.

    . ~/.bashrc
    
  3. Po nastavení proměnných prostředí můžete jejich hodnoty ověřit následujícím způsobem:

    printenv | grep ^ARM*
    

Klíčové body:

  • Stejně jako u jakékoli proměnné prostředí použijte pro přístup k hodnotě předplatného Azure z skriptu Terraformu následující syntaxi: ${env.<environment_variable>} Pokud například chcete získat přístup k hodnotě ARM_SUBSCRIPTION_ID , zadejte ${env.ARM_SUBSCRIPTION_ID}.
  • Vytvoření a použití plánů provádění Terraformu provádí změny v předplatném Azure přidruženém k instančnímu objektu. Tento fakt může být někdy matoucí, pokud jste přihlášení k jednomu předplatnému Azure a proměnné prostředí odkazují na druhé předplatné Azure. Podívejme se na následující příklad, který vysvětlujeme. Řekněme, že máte dvě předplatná Azure: SubA a SubB. Pokud je aktuální předplatné Azure SubA (určeno prostřednictvím az account show), zatímco proměnné prostředí odkazují na SubB, všechny změny provedené Terraformem jsou v SubB. Proto byste se museli přihlásit ke svému předplatnému SubB, abyste mohli zobrazit změny spuštěním příkazů Azure CLI nebo příkazů Azure PowerShellu.

Zadání přihlašovacích údajů instančního objektu v bloku zprostředkovatele Terraformu

Blok zprostředkovatele Azure definuje syntaxi, která umožňuje zadat ověřovací informace vašeho předplatného Azure.

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

Upozornění

Možnost zadat přihlašovací údaje předplatného Azure v konfiguračním souboru Terraformu může být praktická – zejména při testování. Nedoporučuje se ale ukládat přihlašovací údaje do prostého textového souboru, který můžou zobrazit nevěrní jednotlivci.

3. Ověření výsledků

Ověřte, že jste se ověřili v předplatném Azure zobrazením aktuálního předplatného.

Pokud chcete ověřit aktuální předplatné Azure prostřednictvím Azure CLI, spusťte příkaz az account show.

az account show

Další kroky