Začínáme: instalace terraformu na Windows s Bash
Terraformu umožňuje definici, náhled a nasazení cloudové infrastruktury. Pomocí Terraformu vytvoříte konfigurační soubory pomocí syntaxe HCL. Syntaxe HCL umožňuje zadat poskytovatele cloudu, jako je například Azure – a prvky, které tvoří vaši cloudovou infrastrukturu. Po vytvoření konfiguračních souborů můžete vytvořit 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 spouštění k nasazení infrastruktury.
V tomto článku se seznámíte s možnostmi ověřování v Azure pro použití s Terraformu.
V tomto článku získáte informace o těchto tématech:
- Instalace emulátoru terminálu Git bash
- Instalace rozhraní příkazového řádku Azure CLI
- Nainstalovat Terraformu
- Konfigurace prostředí pro spouštění Terraformu na Windows
- 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. instalace emulátoru terminálu
existuje mnoho možností, jak Windows spouštět příkazy bash, včetně Git bash a Terminál Windows. Tento článek byl testován pomocí bash Git. Stáhněte a nainstalujte Git bash.
3. Nainstalujte rozhraní příkazového řádku Azure.
Nainstalujte rozhraní příkazového řádku Azure CLI. Tento článek byl testován pomocí Azure CLI verze 2.26.1.
4. Nainstalujte Terraformu pro Windows
Stáhněte si terraformu. Tento článek byl testován pomocí Terraformu verze 1.0.3.
Ze souboru ke stažení rozbalte spustitelný soubor do zvoleného adresáře (například
c:\terraform).Aktualizujte globální cestu systému na spustitelný soubor.
Otevřete okno terminálu.
Pomocí příkazu Ověřte konfiguraci globální cesty
terraform.terraform -version
5. 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í prostřednictvím účet Microsoft pomocí Cloud Shell (s bash nebo PowerShellem) a
- ověřování prostřednictvím účet Microsoft pomocí Windows (s Bash nebo powershellem)
- Ověřování prostřednictvím instančního objektu:
- Pokud objekt služby nemáte, vytvořte instanční objekt.
- Ověřování v Azure pomocí proměnných prostředí nebo ověřování v Azure pomocí bloku poskytovatele terraformu
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é.
Otevřete příkazový řádek, který má přístup k rozhraní příkazového řádku 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í
az loginzobrazí seznam předplatných Azure přidružených k přihlášenému účet Microsoft, včetně výchozího předplatného.
- Po úspěšném přihlášení
Aktuální předplatné Azure ověříte spuštěním AZ Account show.
az account showPokud 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 TableKlíč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 nahraditlive.com#admin@hotmail.com.
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 setnezobrazuje výsledky přepnutí do zadaného předplatného Azure. Můžete ale použítaz account showk potvrzení, že se změnilo aktuální předplatné Azure. - Pokud spustíte
az account listpří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ů).
Pokud chcete vytvořit instanční objekt, přihlaste se k Azure. Po ověření do Azure pomocí účet Microsoftse sem vraťte.
Pokud vytváříte instanční objekt z bash Git, 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í můžete nastavit
MSYS_NO_PATHCONVglobá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~/.bashrcsouboru nastavení.
- Proměnnou prostředí můžete nastavit
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