Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du utför några av de mer avancerade uppgifterna med Azure Export for Terraform.
- Lägg till resurser i befintliga Terraform-miljöer.
- Exportera resurser till en befintlig Terraform-miljö med fjärrserverdelstillstånd
Lägga till befintliga resurser
Som standard ser Azure Export for Terraform till att utdatakatalogen är tom för att undvika konflikter med befintliga användarfiler. Om du behöver importera resurser till en befintlig tillståndsfil lägger du till --append flaggan.
aztfexport [command] --append <scope>
--append När flaggan har angetts verifierar Azure Export for Terraform om det finns ett befintligt provider eller terraform blockerat objekt i någon av filerna i den aktuella katalogen. Annars skapar verktyget en fil för varje block och fortsätter sedan med export. Om utdatakatalogen har en tillståndsfil importeras alla exporterade resurser till tillståndsfilen.
Dessutom har filen som genereras ett .aztfexport suffix före tillägget , till exempel main.aztfexport.tf - för att undvika potentiella filnamnskonflikter.
Om du kör aztfexport --append flera gånger skapas en enda main.aztfexport.tf med exportresultatet som läggs till i filen varje gång kommandot körs.
Ta med din egen Terraform-konfiguration
Som standard använder Azure Export for Terraform en lokal serverdel för att lagra tillståndsfilen. Det är dock också möjligt att använda en fjärrserverdel. Med Azure Export for Terraform kan du definiera dina egna terraform eller provider block som ska skickas.
Definiera dessa block i en .tf fil i målkatalogen --append , exportera med flaggan och dina konfigurationsexporter till den angivna serverdels- och providerversionen (om den tillhandahålls).
Viktigt!
Om den angivna versionen av AzureRM inte matchar den installerade versionen vid export misslyckas kommandot.
Azure Storage-exempel
Det här exemplet baseras på artikeln Store Terraform-tillstånd i Azure Storage.
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 {}
}
Terraform Cloud-exempel
terraform {
cloud {
organization = "aztfexport-test"
workspaces {
name = "aztfexport-playground"
}
}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {
}
}
Infogad upplevelse
Om du vill exportera till en infogad serverdel använder du --backend-type alternativen och --backend-config . Mer information om hur du konfigurerar en Terraform-serverdel finns i Terraform-serverdelskonfiguration.
Med vårt Azure Storage-kontoexempel behöver du följande enligt definitionen i dokumentationen för AzureRM-serverdelen.
- Namn på resursgrupp
- Lagringskontonamn
- Namn på lagringscontainer
Skicka dessa parametrar till kommandot tillsammans med din serverdelstyp:
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
Viktiga punkter:
- I föregående exempel använder jag unix-radfortsättningstecknet så att koden visas väl i webbläsaren. Du kan behöva ändra dessa tecken så att de matchar kommandoradsmiljön , till exempel PowerShell, eller kombinera kommandot på en rad.
- Om serverdelstillståndet redan finns sammanfogar Azure Export for Terraform de nya resurserna med det befintliga tillståndet automatiskt. Du behöver inte ange alternativet
--appendinfogat.
Exportera Azure-resurser till en befintlig Terraform-miljö
Nu ska vi sätta ihop allt! Anta att nya resurser har skapats utanför Terraform som behöver flyttas till Terraform-hantering. För att slutföra avsnittet kontrollerar du att du har en konfigurerad serverdel. I den här självstudien används samma konfiguration som anges i självstudien om fjärrtillstånd för Azure Storage.
Kör följande kommando i den överordnade katalogen där du vill att den temporära katalogen ska skapas:
aztfexport resource -o tempdir --hcl-only <resource_id>Viktiga punkter:
- Flaggan
-oanger att katalogen ska skapas om den inte finns. - Flaggan
--hcl-onlyanger att de konfigurerade resurserna ska exporteras till HCL
- Flaggan
När du har kontrollerat att resursen kan läggas till använder du den genererade mappningsfilen och
--appendflaggan för att säkerställa att Azure Export respekterar det befintliga fjärrtillståndet och providerversionerna i vår befintliga miljö:aztfexport map --append `./tempdir/aztfexportResourceMapping.json`Kör terraform init.
terraform init --upgradeKör terraform-plan.
Azure Export for Terraform ska visa Inga ändringar behövs.
Grattis! Infrastrukturen och dess motsvarande tillstånd har lagts till i Terraform-miljön.
Om din plan stöter på problem kan du läsa begreppen Azure Export for Terraform för att förstå begränsningar när det gäller att distribuera kod som genereras av --hcl-only. Om den artikeln inte hjälper dig öppnar du ett GitHub-problem.
Anpassa frågan ytterligare
Några ytterligare avancerade flaggor beskrivs nedan, med hur du använder dem:
Välja molnmiljö
Om du vill ange en annan miljö än det offentliga molnet använder du --env flaggan. Till exempel för amerikanska myndigheter:
aztfexport [command] --env="usgovernment" [further options] <scope>
Ändra Terraform-providerversion
Använd flaggan för enklare åtkomst till en önskad AzureRM eller AzAPI version --provider-version . Om du till exempel var på AzAPI version 1.10.0:
aztfexport [command] --provider-name=azapi --provider-version=1.10.0 [further options] <scope>
Autentisering
Det finns en mängd olika flaggor för att hantera autentiseringskonfigurationen. Vissa flaggor lades till så sent som 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(standardvärdet är falskt)--use-azure-cli-cred(standardvärdet är true)--use-oidc-cred(standardvärdet är falskt)
Flaggorna ovan följer providerns azurerm namngivningskonvention. Alla flaggor kan också konfigureras via miljövariabler, vilket inkluderar samma miljövariabel som definierats i providern azurerm .
aztfexport försöker autentisera med var och en av autentiseringstyperna i följande ordning och stoppa när en token tillhandahålls:
- Klienthemlighet
- Klientcertifikat
- OIDC
- Hanterad identitet
- Azure CLI
Om en eller flera use-xxx-cred inte är sanna hoppas den typen av autentiseringsuppgifter över. Det här beteendet är detsamma som providern.
Providerkonfigurationen kan åsidosätta alla autentiseringskonfigurationer från aztfexport. Detta gör det möjligt för användare att använda olika typer av autentiseringsuppgifter mellan aztfexport och providern.
Inkludera rolltilldelningar
Om du vill inkludera rolltilldelningar när du exporterar resursomfånget --include-role-assignment använder du kommandot:
aztfexport [command] --include-role-assignment [further options] <scope>