Ověřování Terraformu do Azure

Pokud chcete používat Terraformu příkazy proti vašemu předplatnému Azure, musíte nejdřív ověřit Terraformu k tomuto předplatnému. Tento článek se zabývá některými běžnými scénáři ověřování do Azure.

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

  • Principy běžných scénářů ověřování Terraformu a Azure
  • Ověření prostřednictvím účet Microsoft z Cloud Shell (pomocí bash nebo PowerShellu)
  • ověření prostřednictvím účet Microsoft z Windows (pomocí Bash nebo powershellu)
  • Vytvoření instančního objektu pomocí rozhraní příkazového řádku Azure
  • 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 služby 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ěřování Terraformu do Azure

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

Terraformu podporuje ověřování v Azure pomocí Azure CLI. ověřování pomocí Azure PowerShell se nepodporuje. proto při práci s terraformu můžete použít modul Azure PowerShell, nejprve je třeba provést ověření v azure pomocí rozhraní příkazového řádku azure CLI.

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

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

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

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

  1. Otevřete příkazový řádek, který má přístup k rozhraní příkazového řádku 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í az login zobrazí seznam předplatných Azure přidružených k přihlášenému účet Microsoft, včetně výchozího předplatného.
  3. Aktuální předplatné Azure ověříte spuštěním AZ Account show.

    az account show
    
  4. Pokud chcete zobrazit všechny názvy a ID předplatného 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ý text nahraďte účet Microsoft e-mailovou adresou, jejíž předplatné Azure chcete zobrazit.
    • S živým účtem, jako je třeba Služba Hotmail nebo Outlook – možná budete muset zadat plně kvalifikovanou e-mailovou adresu. Například pokud je vaše e-mailová adresa admin@hotmail.com , možná budete muset zástupný symbol nahradit 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 identifikátorem nebo názvem předplatného, které chcete použít.
    • Volání az account set nezobrazuje výsledky přepnutí do zadaného předplatného Azure. Můžete ale použít az account show k potvrzení, že se změnilo aktuální předplatné Azure.
    • 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é jste zadali pomocí az account set .

Vytvoření instančního objektu

Automatizované nástroje, které nasazují nebo používají služby Azure (například Terraformu), by měly mít vždycky omezená oprávnění. Místo toho, aby se aplikace přihlásily jako plně privilegovaný uživatel, nabízí Azure objekty služby.

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

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

  2. Pokud vytváříte instanční objekt z bash Git, 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í můžete nastavit MSYS_NO_PATHCONV globálně (pro všechny relace Terminálové služby) nebo místně (jenom pro aktuální relaci). Vzhledem k tomu, že vytváření instančního objektu není něco často, je v ukázce nastavena hodnota pro aktuální relaci. Chcete-li nastavit tuto proměnnou prostředí globálně, přidejte do ~/.bashrc souboru nastavení.
  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
    

    Klíčové body:

    • Můžete nahradit <service-principal-name> vlastním názvem pro vaše prostředí nebo parametr úplně vynechat. Pokud parametr vynecháte, hlavní název služby se vygeneruje 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. appIdHodnoty, password a tenant se používají v dalším kroku.
    • Pokud dojde ke ztrátě, heslo nelze načíst. V takovém případě byste měli heslo uložit na bezpečném místě. Pokud zapomenete heslo, 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ěvatele . Další informace o Role-Based Access Control (RBAC) a rolích najdete v článku role RBAC: předdefinované role.
    • Výstup z vytvář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 pověření do správy zdrojového kódu.
    • Další informace o možnostech Vytvoř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í 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í.

3. Ověření výsledků

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

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