Začínáme: Instalace Terraformu na Windows s Azure PowerShell

Terraform umožňuje definici, verzi Preview a nasazení cloudové infrastruktury. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe HCL umožňuje určit poskytovatele cloudu , jako je Azure, a elementy, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů vytvoříte plán spuštění, který vám umožní zobrazit náhled změn infrastruktury před jejich nasazením. Po ověření změn použijete plán spuště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
  • Principy běžných scénářů ověřování v Terraformu a Azure
  • Ověřování prostřednictvím účet Microsoft z Cloud Shell (pomocí Bashe nebo PowerShellu)
  • Ověřování prostřednictvím účet Microsoft z Windows (pomocí Bashe nebo PowerShellu)
  • Vytvoření objektu služby 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 poskytovatele 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 PowerShell

  1. Nejnovější modul PowerShellu, který umožňuje interakci s prostředky Azure, se nazývá Azure PowerShell Az. Při použití modulu Azure PowerShell Az se na všech platformách doporučuje PowerShell 7 (nebo novější). 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.1.3 (x64) na Windows 10.

3. Instalace Azure CLI

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

4. Instalace Terraformu pro Windows

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

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

  3. Aktualizujte globální cestu vašeho systému ke spustitelnému souboru.

  4. Otevřete okno terminálu.

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

    terraform -version
    

5. Ověření Terraformu v Azure

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

Terraform podporuje ověřování v Azure pouze prostřednictvím Azure CLI. Ověřování pomocí Azure PowerShell se nepodporuje. Proto zatímco při práci na Terraformu Azure PowerShell použít modul Azure PowerShell, musíte se nejprve 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ěření v Azure prostřednictvím účet Microsoft

Název účet Microsoft uživatelské jméno (přidružené k e-mailu a jeho přihlašovacím údajům), které se používá k přihlášení služby Microsoft – například Azure. Předplatné účet Microsoft přidružené k jednomu nebo více předplatným Azure a jedno z těchto předplatných je výchozí.

Následující kroky ukazují, jak se interaktivně přihlásit k Azure pomocí účet Microsoft, vypište přidružená předplatná Azure účtu (včetně výchozího) a nastavte aktuální předplatné.

  1. Otevřete příkazový řádek, který má přístup k Azure CLI.

  2. Spusťte příkaz az login bez jakýchkoli parametrů a podle pokynů se přihlaste k Azure.

    az login
    

    Klíčové body:

    • Po úspěšném přihlášení se zobrazí seznam předplatných Azure přidružených k přihlášené az login účet Microsoft, včetně výchozího předplatného.
  3. Aktuální předplatné Azure potvrdíte spuštěním příkazu 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:

    • Zástupný text <microsoft_account_email> nahraďte e-mailovou účet Microsoft, jejíž předplatná Azure chcete vypište.
    • V případě účtu Live , jako je hotmail nebo outlook, možná budete muset zadat plně kvalifikovanou e-mailovou adresu. Pokud je vaše e-mailová adresa například , možná budete muset zástupný admin@hotmail.com symbol nahradit za 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:

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

Vytvoření instančního objektu

Automatizované nástroje, které nasadí 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šoval jako plně privilegovaný uživatel, nabízí Azure 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 použití tohoto instančního objektu pro budoucí ověřování (interaktivně nebo ze skriptů).

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

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

    export MSYS_NO_PATHCONV=1    
    

    Klíčové body:

    • Proměnnou prostředí MSYS_NO_PATHCONV 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í objektu služby není něco, co často dělají, nastaví ukázka hodnotu pro aktuální relaci. Pokud chcete tuto proměnnou prostředí nastavit globálně, přidejte do ~/.bashrc souboru nastavení .
  3. Pokud chcete vytvořit objekt služby, spusťte příkaz az ad sp create-for-rbac.

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

    Klíčové body:

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

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

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

  1. Upravte soubor ~/.bashrc 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 skript ~/.bashrc spustit, spusťte source ~/.bashrc příkaz (nebo jeho zkrácený . ~/.bashrc ekvivalent). Můžete také ukončit a znovu Cloud Shell, aby se skript spouštěl automaticky.

    . ~/.bashrc
    
  3. Po nastavení proměnných prostředí můžete ověřit jejich hodnoty 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 ze skriptu Terraformu následující syntaxi: ${env.<environment_variable>} . Pokud například chcete získat přístup k ARM_SUBSCRIPTION_ID hodnotě, 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 tomuto objektu služby. Tato skutečnost může být někdy matoucí, pokud jste přihlášení k jednomu předplatnému Azure a proměnné prostředí odkazovat na druhé předplatné Azure. Podívejme se na následující příklad, který vám vysvětlíme. Řekněme, že máte dvě předplatná Azure: SubA a SubB. Pokud aktuální předplatné Azure je SubA (určené prostřednictvím ), zatímco proměnné prostředí odkazovat na SubB, všechny změny provedené az account show Terraformem jsou v SubB. Proto se musíte přihlásit ke svému předplatnému SubB a spustit příkazy Azure CLI nebo Azure PowerShell zobrazit změny.

Zadání přihlašovacích údajů instančního objektu v bloku poskytovatele 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í. Přihlašovací údaje ale nedoporučujeme ukládat do smazatelného textového souboru, který mohou prohlížet uživatelé, kteří nejsou důvěryhodní.

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

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

Další kroky