Een geautomatiseerde werkstroom toepassen

Voltooid

In deze les leert u meer over geautomatiseerde werkstroomhulpprogramma's en hoe deze kunnen worden geïntegreerd met Terraform en Azure.

Info over GitHub-acties

Als infrastructuurbeheerder hebt u uw build- en implementatiewerkstromen nodig om hetzelfde versiebeheer als uw project te gebruiken.

Met behulp van GitHub Actions kunt u een CI/CD-proces (continue integratie en continue levering) uitvoeren dat is gekoppeld aan uw GitHub-opslagplaatsen.

Met GitHub Actions kunt u uw code rechtstreeks vanuit GitHub bouwen, testen en implementeren. U kunt ook codebeoordelingen toewijzen, vertakkingen en sorteerproblemen beheren.

GitHub Actions-onderdelen

Laten we de verschillende GitHub Actions-onderdelen beschrijven, zoals wordt weergegeven in het volgende diagram:

Diagram met de relatie tussen GitHub Actions-werkstromen en hun onderdeeltaken, stappen en acties.

  • Werkstroom: Geactiveerd door bepaalde gebeurtenissen of activiteiten, is een werkstroom een verzameling taken en stappen waarmee taken voor de levenscyclus van softwareontwikkeling worden geautomatiseerd.
  • Taak: Een reeks stappen die worden uitgevoerd op een runner.
  • Stap: Een taak die een of meer opdrachten of acties kan uitvoeren. Elke stap bestaat uit afzonderlijke acties die worden uitgevoerd nadat een specifieke gebeurtenis plaatsvindt, zoals een pull-aanvraag.
  • Actie: Zelfstandige opdrachten die kunnen worden gecombineerd in stappen. U kunt meerdere stappen combineren om een taak te maken. Afzonderlijke acties zijn verpakte scripts waarmee softwareontwikkelingstaken worden geautomatiseerd. Als u een werkstroom wilt maken, voegt u acties toe aan een YAML-bestand in de map .github/workflows in uw GitHub-opslagplaats.

Een Terraform GitHub-actie

Met hashicorp/setup-terraform de actie wordt de Terraform CLI ingesteld in uw GitHub Actions-werkstroom door:

  • Een specifieke versie van de Terraform CLI downloaden en toevoegen aan de PATH.
  • Het Terraform CLI-configuratiebestand configureren met een Terraform Cloud- of Enterprise-hostnaam en API-token.
  • Het installeren van een wrapperscript om latere aanroepen van het terraform binaire bestand te verpakken en de STDOUT-, STDERR- en afsluitcode weer te geven als uitvoer met de naam stdout, stderren exitcoderespectievelijk , .

GitHub Actions verifiëren met Azure

Terraform ondersteunt verschillende opties voor verificatie met Azure:

  • Wanneer u Terraform interactief gebruikt, wordt u aangeraden zich te verifiëren via een Microsoft-account.
  • Wanneer u Terraform gebruikt vanuit code of door automatisering, wordt u aangeraden zich te verifiëren via een Azure-service-principal.

Een service-principal is een identiteit voor gebruik met toepassingen, gehoste services en geautomatiseerde hulpprogramma's voor toegang tot Azure-resources.

Volgende stappen

In de volgende les stellen we een voorbeeldproject in en gebruiken we GitHub Actions met Terraform om het in Azure te implementeren.

Belangrijke concepten voor nieuwe Azure Pipelines

Laten we meer weten over de onderdelen waaruit een Azure-pijplijn bestaat.

Diagram van de belangrijkste concepten en onderdelen in Azure Pipeline.

  • Een trigger geeft aan dat een pijplijn moet worden uitgevoerd.
  • Een pijplijn bestaat uit een of meer fasen. Een pijplijn kan worden geïmplementeerd in een of meer omgevingen.
  • Een fase is een manier om een taak in een pijplijn te organiseren en elke fase kan een of meer taken hebben.
  • Elke taak wordt uitgevoerd op één agent. Een taak kan ook zonder agent zijn.
  • Elke agent voert een taak uit die een of meer stappen bevat.
  • Een stap kan een taak of script zijn en is de kleinste bouwsteen van een pijplijn.
  • Een taak is een vooraf verpakt script dat een actie uitvoert, zoals het aanroepen van een REST API of het publiceren van een build-artefact.
  • Een artefact is een verzameling bestanden of pakketten die zijn gepubliceerd door een uitvoering.

Tip

Zie de koppelingen in de sectie Samenvatting voor meer gedetailleerde informatie over de verschillende pijplijnonderdelen en hoe u deze kunt gebruiken.

Terraform-taken voor Azure-pijplijnen

Bij het uitvoeren van opdrachten die communiceren met Azure, zoals plan, applyendestroy, gebruikt de taak een Azure-serviceverbinding om bewerkingen voor het doelabonnement te autoriseren. De aanbevolen manier om verbinding te maken met Azure is het verbinden van de serviceverbinding met een Azure-service-principal. Een Azure-service-principal is een identiteit die u maakt voor het gebruik van geautomatiseerde hulpprogramma's voor toegang tot Azure-resources.

Het volgende YAML-fragment maakt gebruik van de Azure Pipeline Terraform-provider azurerm. Er wordt een serviceverbinding opgegeven via de environmentServiceNameAzureRM invoer:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Tip

Als u als Azure Pipeline Terraform-provider gebruiktazurerm, moet u ook een serviceverbinding en opslagcontainer opgeven voor gebruik met de back-endstatus van Terraform.

Parameters doorgeven

Er zijn meerdere methoden om parameters door te geven aan terraform-opdrachten. De Variabelen bieden u een handige manier om belangrijke stukjes gegevens op te halen in verschillende delen van de pijplijn.

U kunt een variabele voor een build-pijplijn instellen door de volgende stappen uit te voeren:

  1. Ga naar de pagina Pijplijnen , selecteer de juiste pijplijn en selecteer Bewerken.
  2. Zoek de variabelen voor deze pijplijn.
  3. Voeg de variabele toe of werk deze bij.
  4. Als u de variabele als geheim wilt markeren, selecteert u Dit waardegeheim behouden.
  5. Sla de pijplijn op.

Terraform-uitvoer naar pijplijnvariabelen

De TerraformCLI-taak ondersteunt het uitvoeren van de Terraform-opdracht output . Wanneer de CLI wordt uitgevoerd, worden pijplijnvariabelen gemaakt op basis van elke uitvoervariabele die wordt verzonden vanuit de terraform output opdracht.

Volgende stappen

In de volgende les stellen we een voorbeeldproject in en gebruiken we Azure Pipelines met Terraform om het in Azure te implementeren.