Použití automatizovaného pracovního postupu
V této lekci se dozvíte o automatizovaných nástrojích pracovních postupů a o tom, jak se integrují s Terraformem a Azure.
O nástroji GitHub Actions
Jako správce infrastruktury potřebujete pracovní postupy sestavení a nasazení, abyste mohli používat stejnou správu verzí jako váš projekt.
Pomocí GitHub Actions můžete spustit proces kontinuální integrace a průběžného doručování (CI/CD), který je propojený s úložišti GitHub.
Pomocí GitHub Actions můžete vytvářet, testovat a nasazovat kód přímo z GitHubu. Můžete také přiřadit kontroly kódu, spravovat větve a problémy s tříděním.
Komponenty GitHub Actions
Popíšeme různé komponenty GitHub Actions, jak je znázorněno v následujícím diagramu:
- Pracovní postup: Aktivované určitými událostmi nebo aktivitami, pracovní postup je kolekce úloh a kroků, které automatizují úlohy životního cyklu vývoje softwaru.
- Úloha: Sada kroků, které se spouštějí na spouštěči.
- Krok: Úloha, která může spustit jeden nebo více příkazů nebo akcí. Každý krok se skládá z jednotlivých akcí, které se spustí po konkrétní události, jako je například žádost o přijetí změn.
- Akce: Samostatné příkazy, které lze zkombinovat do kroků. Několik kroků je potom možné sloučit do úlohy. Jednotlivé akce jsou zabalené skripty, které automatizují úlohy vývoje softwaru. Pokud chcete vytvořit pracovní postup, přidáte akce do souboru YAML v adresáři .github/workflows v úložišti GitHub.
Akce Terraformu na GitHubu
Akce hashicorp/setup-terraform
nastaví Rozhraní příkazového řádku Terraformu v pracovním postupu GitHub Actions podle:
- Stažení konkrétní verze Rozhraní příkazového řádku Terraformu a jeho přidání do .
PATH
- Konfigurace konfiguračního souboru Rozhraní příkazového řádku Terraformu s názvem hostitele Terraform Cloud nebo Enterprise a tokenem rozhraní API
- Instalace obálkového skriptu pro zabalení pozdějších volání binárního
terraform
souboru a zveřejnění jeho STDOUT, STDERR a ukončovací kód jako výstupy s názvemstdout
,stderr
aexitcode
, v uvedeném pořadí.
Ověřování GitHub Actions pomocí Azure
Terraform podporuje několik možností ověřování v Azure:
- Pokud terraform používáte interaktivně, doporučujeme provést ověření prostřednictvím účtu Microsoft.
- Pokud používáte Terraform z kódu nebo automatizace, doporučujeme provést ověření prostřednictvím instančního objektu Azure.
Instanční objekt je identita pro použití s aplikacemi, hostovanými službami a automatizovanými nástroji pro přístup k prostředkům Azure.
Další kroky
V další lekci nastavíme ukázkový projekt a pomocí GitHub Actions s Terraformem ho nasadíme do Azure.
Klíčové koncepty pro nové služby Azure Pipelines
Pojďme se seznámit s komponentami, které tvoří Azure Pipeline.
- Trigger sděluje kanálu, aby se spustil.
- Kanál se skládá z jedné nebo více fází. Kanál se může nasadit do jednoho nebo více prostředí.
- Fáze je způsob uspořádání úlohy v kanálu a každá fáze může mít jednu nebo více úloh.
- Každá úloha běží na jednom agentu. Úloha může být také bez agentů.
- Každý agent spouští úlohu, která obsahuje jeden nebo více kroků.
- Krok může být úkol nebo skript a je nejmenším stavebním blokem kanálu.
- Úloha je předem zabalený skript, který provede akci, například vyvolání rozhraní REST API nebo publikování artefaktu sestavení.
- Artefakt je kolekce souborů nebo balíčků publikovaných spuštěním.
Tip
Podrobnější informace o různých součástech kanálu a jejich použití najdete v odkazech uvedených v části Souhrn .
Úlohy Terraformu pro Azure Pipelines
Při spouštění příkazů, které pracují s Azure, jako plan
je například , apply
a destroy
, úloha použije připojení služby Azure k autorizaci operací s cílovým předplatným.
Doporučený způsob připojení k Azure je vazba připojení služby k instančnímu objektu Azure. Instanční objekt Azure je identita, kterou vytvoříte pro použití automatizovaných nástrojů pro přístup k prostředkům Azure.
Následující fragment kódu YAML používá zprostředkovatele azurerm
Terraformu služby Azure Pipeline. Připojení ke službě environmentServiceNameAzureRM
se zadává prostřednictvím vstupu:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
Tip
Pokud používáte azurerm
jako zprostředkovatele Terraformu kanálu Azure, musíte také zadat připojení služby a kontejner úložiště, který se má použít se stavem back-endu Terraformu.
Předávání parametrů
Existuje několik metod předání parametrů příkazům terraformu. Proměnné poskytují pohodlný způsob, jak do různých částí kanálu dostat klíčová data.
Proměnnou pro kanál buildu můžete nastavit pomocí následujícího postupu:
- Přejděte na stránku Kanály , vyberte příslušný kanál a vyberte Upravit.
- Vyhledejte proměnné pro tento kanál.
- Přidejte nebo aktualizujte proměnnou.
- Pokud chcete proměnnou označit jako tajný klíč, vyberte Zachovat tento tajný klíč hodnoty.
- Uložte kanál.
Výstup Terraformu do proměnných kanálu
Úloha TerraformCLI podporuje spuštění příkazu Terraform output
. Po spuštění rozhraní příkazového řádku se proměnné kanálu vytvoří z každé výstupní proměnné vygenerované z terraform output
příkazu.
Další kroky
V další lekci nastavíme ukázkový projekt a pomocí Azure Pipelines s Terraformem ho nasadíme do Azure.