Konfigurace Terraformu v Azure Cloud Shellu pomocí Bash

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 obsahuje možnosti ověřování v Azure pro použití s Terraformem.

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

  • Konfigurace Cloud Shellu
  • Zobrazení aktuálního účtu Azure
  • 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. Otevřete Cloud Shell

  1. Pokud už máte otevřenou relaci Cloud Shellu, můžete přejít k další části.

  2. Přejděte na Azure Portal.

  3. V případě potřeby se přihlaste ke svému předplatnému Azure a změňte adresář Azure.

  4. Otevřete Cloud Shell.

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

  5. Pokud jste cloud Shell ještě nepoužívali, nakonfigurujte prostředí a nastavení úložiště.

  6. Vyberte prostředí příkazového řádku.

    Select the CLI you want to use in Cloud Shell.

3. Instalace nejnovější verze Terraformu v Azure Cloud Shellu

Cloud Shell se automaticky aktualizuje na nejnovější verzi Terraformu. Aktualizace ale přicházejí během několika týdnů od vydání. V tomto článku se dozvíte, jak stáhnout a nainstalovat aktuální verzi Terraformu.

  1. Určete verzi Terraformu, která se používá v Cloud Shellu.

    terraform version
    
  2. Pokud verze Terraformu nainstalovaná v Cloud Shellu není nejnovější verzí, zobrazí se zpráva oznamující, že verze Terraformu je za aktuální.

  3. Pokud pracujete s uvedenou verzí, přejděte k další části. V opačném případě pokračujte následujícím postupem.

  4. Přejděte na stránku pro stahování Terraformu.

  5. Posuňte se dolů na odkazy pro stažení Linuxu.

  6. Přesuňte myš na 64bitový odkaz. Tento odkaz je určený pro nejnovější 64bitovou verzi LINUX AMD, která je vhodná pro Cloud Shell.

  7. Zkopírujte adresu URL.

  8. Spusťte a nahraďte curlzástupný symbol adresou URL z předchozího kroku.

    curl -O <terraform_download_url>
    
  9. Rozbalte ho.

    unzip <zip_file_downloaded_in_previous_step>
    
  10. Pokud adresář neexistuje, vytvořte adresář s názvem bin.

    mkdir bin
    
  11. terraform Přesuňte soubor do bin adresáře.

    mv terraform bin/    
    
  12. Zavřete a restartujte Cloud Shell.

  13. Ověřte, že stažená verze Terraformu je první v cestě.

    terraform version
    

4. Ověření výchozího předplatného Azure

Když se přihlásíte k webu Azure Portal pomocí účtu Microsoft, použije se výchozí předplatné Azure pro tento účet.

Terraform se automaticky ověřuje pomocí informací z výchozího předplatného Azure.

Spuštěním příkazu az account show ověřte aktuální účet Microsoft a předplatné Azure.

az account show

Všechny změny, které provedete přes Terraform, se nacházejí v zobrazeném předplatném Azure. Pokud chcete, přeskočte zbytek tohoto článku.

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