Terraform gebruiken als infrastructuur-als-code hulpprogramma voor Azure Developer CLI

Azure Developer CLI (azd) ondersteunt meerdere infrastructuren als codeproviders( IaC), waaronder:

Standaard wordt ervan uitgegaan dat azd Bicep als de IaC-provider gebruikt. Raadpleeg het artikel Terraform en Bicep vergelijken voor hulp bij het bepalen welke IaC-provider het beste is voor uw project.

Notitie

Terraform bevindt zich nog steeds in de bètafase. Meer informatie over ondersteuning voor alfa- en bètafuncties op de pagina met functieversiebeheer en releasestrategie

Vereisten

Important

Voor Terraform-implementaties is een Azure CLI-aanmelding vereist, zelfs wanneer u deze gebruiktazd. De Terraform-provider azurerm wordt standaard geverifieerd via Azure CLI en leest geen tokens uit de azd referentiecache. Als u alleen azd auth login uitvoert, mislukt azd up tijdens de inrichtingsstap met ERROR: Please run 'az login' to setup account. Zie Verifiëren voor Azure voor de aanbevolen aanmeldingsstroom.

Verifiëren bij Azure

Omdat Terraform Azure CLI gebruikt voor authenticatie, moet u zijn aangemeld bij zowel azd als az voordat u azd up uitvoert. Dat kunt u op twee manieren doen.

Configureren azd voor het delegeren van verificatie aan Azure CLI. Met deze instelling kunt u zich eenmaal aanmelden met az login en dezelfde referenties gebruiken voor beide hulpprogramma's.

azd config set auth.useAzCliAuth true
az login

Als u met meerdere tenants werkt, neemt u de --tenant parameter op:

az login --tenant <tenant-id>

Optie 2: Meld u afzonderlijk aan bij elk hulpprogramma

Als u de verificatie voor azd en Azure CLI liever onafhankelijk houdt, meldt u zich bij elk hulpprogramma aan met de eigen opdracht:

azd auth login
az login

U moet beide sessies vernieuwen als een van beide tokens verloopt.

Terraform configureren als de IaC-provider

  1. Open het bestand azure.yaml in de hoofdmap van uw project en zorg ervoor dat u de volgende regels hebt om de standaardwaarde te overschrijven. Dit is Bicep:

    infra:
      provider: terraform
    
  2. Voeg al uw .tf bestanden toe aan de infra map in de hoofdmap van uw project.

  3. Voer azd upuit.

Notitie

Bekijk deze twee azd-sjablonen met Terraform als IaC-provider: Node.js en Terraform en Python en Terraform.

azd pipeline config voor Terraform

Terraform slaat de status van uw beheerde infrastructuur en configuratie op. Vanwege dit statusbestand moet u externe status voordat u azd pipeline config uitvoert om uw implementatiepijplijn in GitHub in te stellen.

azd Standaard gaan we uit van het gebruik van een lokaal statusbestand. Als u azd up hebt uitgevoerd voordat u de externe status inschakelt, moet u azd down uitvoeren en overschakelen naar het externe statusbestand.

Lokale versus externe toestand

Terraform maakt gebruik van persistente statusgegevens om de resources bij te houden die worden beheerd.

Scenario’s voor het inschakelen van de afstandsstatus:

  • Als u gedeelde toegang tot de statusgegevens wilt toestaan en meerdere personen wilt toestaan samen te werken aan die verzameling infrastructuurbronnen
  • Om te voorkomen dat gevoelige informatie wordt weergegeven die is opgenomen in het statusbestand
  • De kans op onbedoeld verwijderen verkleinen vanwege het lokaal opslaan van de status

Externe status inschakelen

  1. Zorg ervoor dat u een opslagaccount voor externe status configureert.

  2. Voeg een nieuw bestand toe met de naam provider.conf.json in de infra map.

    {
        "storage_account_name": "${RS_STORAGE_ACCOUNT}",
        "container_name": "${RS_CONTAINER_NAME}",
        "key": "azd/azdremotetest.tfstate",
        "resource_group_name": "${RS_RESOURCE_GROUP}"
    }
    
  3. Update provider.tf gevonden in de infra map om de back-end op 'remote' in te stellen

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. Voer azd env set <key> <value> uit om configuratie toe te voegen aan het .env bestand. Voorbeeld:

    azd env set RS_STORAGE_ACCOUNT your_storage_account_name
    azd env set RS_CONTAINER_NAME your_terraform_container_name
    azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
    
  5. Voer de volgende azd opdracht uit op basis van uw gebruikelijke werkstroom. Wanneer de externe status wordt gedetecteerd, initialiseert azd Terraform met de geconfigureerde back-endconfiguratie.

  6. Als u de omgeving wilt delen met teamleden, moet u ervoor zorgen dat ze azd env refresh -e <environmentName> omgevingsinstellingen in het lokale systeem vernieuwen en stap 4 uitvoeren om configuratie in het .env bestand toe te voegen.

Zie ook

Volgende stappen

veelgestelde vragen over Azure Developer CLI