Sdílet prostřednictvím


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.

  1. 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.
  2. 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`
    
  3. Spusťte inicializaci terraformu.

    terraform init --upgrade
    
  4. Spusťte plán terraformu.

  5. 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-onlyná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:

  1. Tajný klíč klienta
  2. Klientský certifikát
  3. OIDC
  4. Spravovaná identita
  5. 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>

Další kroky