Instalace Terraformu ve Windows pomocí Azure PowerShellu

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.

Tento článek popisuje, jak začít s Terraformem v Azure pomocí PowerShellu.

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

  • Instalace nejnovější verze PowerShellu
  • Instalace nového modulu Az PowerShellu
  • Instalace Azure CLI
  • Instalace Terraformu
  • 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. Instalace Azure PowerShellu

  1. Nejnovější modul PowerShellu, který umožňuje interakci s prostředky Azure, se nazývá modul Az Azure PowerShellu. Při použití modulu Az Azure PowerShellu je doporučená verze PowerShellu 7 (nebo novější) na všech platformách. Pokud máte nainstalovaný PowerShell, můžete verzi ověřit zadáním následujícího příkazu na příkazovém řádku PowerShellu.

    $PSVersionTable.PSVersion
    
  2. Nainstalujte PowerShell. Tato ukázka byla testována pomocí PowerShellu 7.2.1 (x64) ve Windows 10.

3. Instalace Azure CLI

Aby se Terraform ověřil v Azure, musíte nainstalovat Azure CLI. Tato ukázka byla testována pomocí Azure CLI verze 2.32.0.

4. Instalace Terraformu pro Windows

  1. Stáhněte si Terraform. Tento článek byl testován pomocí Terraformu verze 1.1.4.

  2. Ze stahování extrahujte spustitelný soubor do adresáře podle vašeho výběru (například c:\terraform).

  3. Aktualizujte globální proměnnou prostředí PATH systému tak, aby zahrnovala adresář, který obsahuje spustitelný soubor.

  4. Otevřete okno terminálu.

  5. Pomocí příkazu ověřte konfiguraci terraform globální cesty.

    terraform -version
    

5. 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.

Řešení potíží s Terraformem v Azure

Řešení běžných problémů při používání Terraformu v Azure

Další kroky