Začínáme: Konfigurace Terraformu v Azure Cloud Shell pomocí Bashe
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 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 Shell
- Zobrazení aktuálního účtu Azure
- 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. Otevření Cloud Shell
Pokud už máte otevřenou Cloud Shell, můžete přeskočit k další části.
Přejděte na Azure Portal.
V případě potřeby se přihlaste ke svému předplatnému Azure a změňte adresář Azure.
Otevřete Cloud Shell.
Pokud jste zásady ještě nepouží Cloud Shell, nakonfigurujte nastavení prostředí a úložiště.
Vyberte prostředí příkazového řádku.
3. Instalace nejnovější verze Terraformu v Azure Cloud Shell
Cloud Shell během několika týdnů od vydání automaticky aktualizuje na nejnovější verzi Terraformu. Pokud ale potřebujete nejnovější verzi dříve, následující kroky vám ukážou, jak stáhnout a nainstalovat aktuální verzi Terraformu.
Určete verzi Terraformu použíovanou v Cloud Shell.
terraform versionPokud verze Terraformu nainstalovaná v Cloud Shell není nejnovější verzí, zobrazí se zpráva s oznámením, že verze Terraformu je aktuální.
Pokud vám uvedená verze nevadí, přejděte k další části. V opačném případě pokračujte následujícím postupem.
Přejděte na stránku pro stahování Terraformu.
Posuňte se dolů na odkazy ke stažení pro Linux.
Přesuňte ukazatel myši nad 64bitový odkaz. Toto je odkaz na nejnovější 64bitovou verzi Linux AMD, která je vhodná pro Cloud Shell.
Zkopírujte adresu URL.
Spusťte
curla nahraďte zástupný text adresou URL z předchozího kroku.curl -O <terraform_download_url>Rozbalte ho.
unzip <zip_file_downloaded_in_previous_step>Pokud adresář neexistuje, vytvořte adresář s názvem
bin.mkdir binPřesuňte
terraformsoubor do adresářebin.mv terraform bin/Ověřte, že stažená verze Terraformu je v cestě první.
terraform version
4. Ověření výchozího předplatného Azure
Když se přihlásíte k Azure Portal pomocí účet 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é prostřednictvím Terraformu změníte, budou 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í 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ěřování přes účet Microsoft pomocí Cloud Shell (s Bashem nebo PowerShellem) a
- Ověřování přes účet Microsoft pomocí Windows (s Bashem nebo PowerShellem)
- Ověřování prostřednictvím objektu služby:
- Pokud nemáte objekt služby, vytvořte objekt služby.
- Ověřování v Azure pomocí proměnných prostředí nebo ověření v Azure pomocí bloku zprostředkovatele Terraform
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é.
Otevřete příkazový řádek, který má přístup k Azure CLI.
Spusťte příkaz az login bez jakýchkoli parametrů a podle pokynů se přihlaste k Azure.
az loginKlíčové body:
- Po úspěšném přihlášení se zobrazí seznam předplatných Azure přidružených k přihlášené účet Microsoft
az loginvčetně výchozího předplatného.
- Po úspěšném přihlášení se zobrazí seznam předplatných Azure přidružených k přihlášené účet Microsoft
Aktuální předplatné Azure potvrdíte spuštěním příkazu az account show.
az account showPokud 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 TableKlíč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.comsymbol nahradit zalive.com#admin@hotmail.com.
- Zástupný text
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 setvolání se nezobrazují výsledky přepnutí na zadané předplatné Azure. Můžete ale použít kaz account showpotvrzení, ž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 listna předplatné, které jste zadali pomocíaz account set.
- Zástupný
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ů).
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.
Pokud vytváříte objekt služby z Git Bashe, nastavte
MSYS_NO_PATHCONVproměnnou prostředí. (Tento krok není nutný, pokud používáte Cloud Shell.)export MSYS_NO_PATHCONV=1Klíčové body:
- Proměnnou prostředí
MSYS_NO_PATHCONVmůž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~/.bashrcsouboru nastavení .
- Proměnnou prostředí
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 ContributorKlíč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-rbaczobrazí několik hodnot.appIdHodnoty,passwordatenantse 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.
- Můžete nahradit
Zadání přihlašovacích údajů instančního objektu v proměnných prostředí
Jakmile vytvoříte instanční objekt, můžete zadat jeho přihlašovací údaje k Terraformu prostřednictvím proměnných prostředí.
Upravte
~/.bashrcsoubor 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>"Chcete-li spustit
~/.bashrcskript, spusťtesource ~/.bashrc(nebo jeho zkrácený ekvivalent. ~/.bashrc). Můžete také ukončit a znovu otevřít Cloud Shell, aby se skript spouštěl automaticky.. ~/.bashrcPo 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 libovolné proměnné prostředí můžete pro přístup k hodnotě předplatného Azure z Terraformu skriptu použít následující syntaxi:
${env.<environment_variable>}. Chcete-li například získat přístup kARM_SUBSCRIPTION_IDhodnotě, zadejte${env.ARM_SUBSCRIPTION_ID}. - Vytvoření a použití plánů provádění Terraformu provede změny v předplatném Azure přidruženém k instančnímu objektu. Tato skutečnost může být někdy matoucí, pokud jste se přihlásili k jednomu předplatnému Azure a proměnné prostředí odkazují na druhé předplatné Azure. Pojďme se podívat na následující příklad, který vám vysvětlí. Ř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é v terraformu jsou v SubB. proto byste se museli přihlašovat ke svému předplatnému SubB, abyste mohli spustit příkazy rozhraní příkazového řádku Azure nebo příkazy Azure PowerShell pro zobrazení změn.
Zadání přihlašovacích údajů instančního objektu v bloku poskytovatele služby Terraformu
Blok poskytovatele Azure definuje syntaxi, která umožňuje zadat ověřovací informace 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 pohodlná – zejména při testování. Nedoporučuje se ale ukládat přihlašovací údaje v nedůvěryhodném textovém souboru, který můžou zobrazit nedůvěryhodní uživatelé.
Řešení potíží s Terraformu v Azure
Řešení běžných problémů při použití Terraformu v Azure