Použití služby Azure Export pro Terraform v pokročilých scénářích
Tento článek vysvětluje, jak provádět některé pokročilejší úlohy s Využitím služby Azure Export for Terraform.
- Připojte prostředky k existujícím prostředím Terraformu.
- Export prostředků do existujícího prostředí Terraformu se vzdáleným stavem back-endu
Připojení k existujícím prostředkům
Ve výchozím nastavení Azure Export for Terraform zajišťuje, aby výstupní adresář byl prázdný, aby nedocházelo ke konfliktům se stávajícími uživatelskými soubory. Pokud potřebujete importovat prostředky do existujícího souboru stavu, přidejte --append
příznak.
aztfexport [command] --append <scope>
Po zadání příznaku --append
Azure Export for Terraform ověří, jestli v některém ze souborů v aktuálním adresáři existuje nějaký soubor provider
nebo terraform
blok. Pokud ne, nástroj vytvoří soubor pro každý blok a pak pokračuje s exportem. Pokud má výstupní adresář stavový soubor, všechny exportované prostředky se naimportují do souboru stavu.
Kromě toho má vygenerovaný soubor příponu .aztfexport
před příponou , například main.aztfexport.tf
– aby nedocházelo ke konfliktům potenciálních názvů souborů.
Pokud spustíte aztfexport --append
vícekrát, vytvoří se jeden main.aztfexport.tf
s výsledky exportu připojenými k souboru při každém spuštění příkazu.
Používání vlastní konfigurace Terraformu
Azure Export for Terraform ve výchozím nastavení používá k uložení souboru stavu místní back-end. Je ale také možné použít vzdálený back-end. Azure Export for Terraform umožňuje definovat vlastní terraform
nebo provider
bloky, které se mají předat.
Definujte tyto bloky v souboru v cílovém .tf
adresáři, exportujte příznakem --append
a exporty konfigurace do zadané verze back-endu a zprostředkovatele (pokud je k dispozici).
Důležité
Pokud zadaná verze AzureRM při exportu neodpovídá nainstalované verzi, příkaz selže.
Příklad služby Azure Storage
Tento příklad vychází z článku, ve službě Azure Storage uložte stav Terraformu.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
backend "azurerm" {
resource_group_name = "tfstate"
storage_account_name = "storageacc"
container_name = "tfstate"
key = "terraform.tfstate"
}
}
provider "azurerm" {
features {}
}
Příklad Terraform Cloudu
terraform {
cloud {
organization = "aztfexport-test"
workspaces {
name = "aztfexport-playground"
}
}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {
}
}
Vložené prostředí
K exportu do back-endu vloženého použijte možnosti --backend-type
a --backend-config
možnosti. Další informace o konfiguraci back-endu Terraformu najdete v tématu Konfigurace back-endu Terraformu.
V našem příkladu účtu úložiště Azure potřebujete následující informace, jak je definováno v dokumentaci k back-endu AzureRM.
- Název skupiny prostředků
- Název účtu úložiště
- Název kontejneru úložiště
Předejte do příkazu tyto parametry spolu s typem back-endu:
aztfexport [subcommand] --backend-type=azurerm \
--backend-config=resource_group_name=<resource group name> \
--backend-config=storage_account_name=<account name> \
--backend-config=container_name=<container name> \
--backend-config=key=terraform.tfstate
Klíčové body:
- V předchozím příkladu používám znak pokračování řádku unixu, aby se kód zobrazil dobře v prohlížeči. Tyto znaky možná budete muset změnit tak, aby odpovídaly prostředí příkazového řádku , jako je PowerShell, nebo ho zkombinovat na jeden řádek.
- Pokud už stav back-endu existuje, Azure Export for Terraform sloučí nové prostředky s existujícím stavem automaticky. Nemusíte zadávat vloženou
--append
možnost.
Export prostředků Azure do existujícího prostředí Terraformu
Pojďme to teď dát dohromady! Představte si, že se vytvořily nové prostředky mimo Terraform, které je potřeba přesunout do správy Terraformu. Pokud chcete dokončit oddíl, ujistěte se, že máte nakonfigurovaný back-end. Tento kurz používá stejnou konfiguraci, kterou jste zadali v kurzu vzdáleného stavu úložiště Azure.
V nadřazené adresáři, ve kterém chcete dočasný adresář vytvořit, spusťte následující příkaz:
aztfexport resource -o tempdir --hcl-only <resource_id>
Klíčové body:
- Příznak
-o
určuje, že se má adresář vytvořit, pokud neexistuje. - Příznak
--hcl-only
určuje export nakonfigurovaných prostředků do seznamu HCL.
- Příznak
Po kontrole, že se prostředek dá připojit, využijte vygenerovaný soubor mapování a
--append
příznak, abyste zajistili, že Azure Export respektuje existující verze vzdáleného stavu a zprostředkovatele v našem existujícím prostředí:aztfexport map --append `./tempdir/aztfexportResourceMapping.json`
Spusťte inicializaci terraformu.
terraform init --upgrade
Spusťte plán terraformu.
Azure Export pro Terraform by neměl zobrazovat žádné změny.
Gratulujeme! Vaše infrastruktura a odpovídající stav se úspěšně připojily k vašemu prostředí Terraformu.
Pokud váš plán narazí na problémy, přečtěte si o konceptech Azure Exportu pro Terraform, kde najdete informace o omezeních pro nasazování kódu vygenerovaného --hcl-only
nástrojem . Pokud vám tento článek nepomůže, otevřete problém s GitHubem.
Další přizpůsobení dotazu
Níže jsou popsány některé další pokročilé příznaky s postupem jejich využití:
Výběr cloudového prostředí
Pokud chcete zadat jiné prostředí než veřejný cloud, použijte --env
příznak. Například pro státní správu USA:
aztfexport [command] --env="usgovernment" [further options] <scope>
Změna verze zprostředkovatele Terraformu
Pro jednodušší přístup k upřednostňované AzureRM
nebo AzAPI
verzi použijte --provider-version
příznak. Pokud jste například byli ve AzAPI
verzi 1.10.0
:
aztfexport [command] --provider-name=azapi --provider-version=1.10.0 [further options] <scope>
Ověřování
Pro správu konfigurace ověřování existuje celá řada příznaků. Některé příznaky byly přidány nejpozději:v0.15
--env
--tenant-id
--auxiliary-tenant-ids
--client-id
--client-id-file-path
--client-certificate
--client-certificate-path
--client-certificate-password
--client-secret
--client-secret-file-path
--oidc-request-token
--oidc-request-url
--oidc-token
--oidc-token-file-path
--use-managed-identity-cred
(výchozí hodnota je false)--use-azure-cli-cred
(výchozí hodnota je true)--use-oidc-cred
(výchozí hodnota je false)
Výše uvedené příznaky se řídí konvencí azurerm
pojmenování poskytovatele. Všechny příznaky se dají konfigurovat také prostřednictvím proměnných prostředí, které zahrnují stejnou proměnnou prostředí definovanou v poskytovateli azurerm
.
aztfexport
se pokusí ověřit pomocí každého z typů přihlašovacích údajů v následujícím pořadí a zastaví se při poskytnutí tokenu:
- Tajný klíč klienta
- Klientský certifikát
- OIDC
- Spravovaná identita
- Azure CLI
Pokud jeden nebo více use-xxx-cred
není pravdivý, tento typ přihlašovacích údajů se přeskočí. Toto chování je stejné jako u poskytovatele.
Konfigurace zprostředkovatele může přepsat jakoukoli konfiguraci ověřování z aztfexport
. Uživatelé tak můžou používat různé typy přihlašovacích údajů mezi aztfexport
zprostředkovatelem a poskytovatelem.
Zahrnutí přiřazení rolí
Pokud chcete při exportu rozsahu prostředků zahrnout přiřazení rolí, použijte --include-role-assignment
tento příkaz:
aztfexport [command] --include-role-assignment [further options] <scope>