Nasazení souborů Bicep pomocí pracovního postupu

Dokončeno

Teď, když jste vytvořili základní pracovní postup, jste připraveni nastavit pracovní postup pro nasazení souborů Bicep. V této lekci se dozvíte, jak nasadit kód Bicep z pracovního postupu a jak nastavit kroky nasazení.

Poznámka:

Příkazy v této lekci jsou znázorněny pro ilustraci konceptů. Zatím nespouštět příkazy. Brzy si procvičíte, co se tady naučíte.

Podívejte se na kód

Vaše soubory Bicep jsou uložené ve vašem úložišti Git. V GitHub Actions musíte pracovní postup explicitně informovat, aby si soubory z úložiště Git zkontroloval. V opačném případě nebude mít váš pracovní postup přístup k souborům. Tento krok je obvykle první věcí, kterou vaše práce dělá.

K pokladně kódu můžete použít actions/checkout@v3 tuto akci:

name: MyWorkflow

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo

Všimněte si, že pracovní postup obsahuje uses klíčové slovo. Klíčové slovo označuje, že chcete použít předdefinovanou akci s názvem actions/checkout.

Stejně jako prostředky Bicep jsou akce vždy verze. V tomto případě pracovní postup používá verzi 3, takže @v3 je připojen k názvu akce.

Jakmile pracovní postup tuto akci zahrne, kód vašeho úložiště se bude rezervovat v systému souborů spouštěče. Pomocí parametru zadáte cestu, do které mají být soubory uloženy path .

Ověřování v Azure

Když nasadíte soubor Bicep z vlastního počítače, použijete Azure CLI nebo Azure PowerShell. Před nasazením kódu se musíte přihlásit k Azure. Nástroje vás obvykle vyzve k zadání přihlašovacích údajů v prohlížeči. Po ověření přihlašovacích údajů se vaše oprávnění k nasazení prostředků potvrdí a pomocí nástrojů můžete nasadit soubor Bicep.

Tip

V tomto modulu vytvoříte identitu úlohy, kterou bude váš pracovní postup používat. Modul Ověření pracovního postupu nasazení Azure pomocí identit úloh poskytuje podrobnější vysvětlení identit úloh, včetně toho, jak fungují, a také jejich vytváření, přiřazování rolí a jejich správě.

Nasazení podle pracovního postupu vyžaduje také ověřování. Vzhledem k tomu, že pracovní postupy běží bez zásahu člověka, pracovní postupy se ověřují v Azure pomocí identity úloh. GitHub a Microsoft Entra ID spolupracují na bezpečném ověření pracovního postupu bez nutnosti jakýchkoli přihlašovacích údajů.

Když váš pracovní postup potřebuje komunikovat s Azure, krok pracovního postupu se přihlásí k Azure pomocí identity úlohy. Potom kroky definované v pracovním postupu používají identitu pracovního postupu.

Diagram that shows a workflow that includes an Azure deployment step, which accesses a secret and then deploys to Azure.

Musíte zajistit, aby vaše identita úlohy má oprávnění, která potřebuje ke spuštění kroků nasazení. Můžete například potřebovat přiřadit identitu úlohy roli Přispěvatel pro skupinu prostředků, do které nasazujete prostředky.

Upozorňující

Může se zdát jednodušší ukládat přihlašovací údaje uživatele do souboru YAML a pak se přihlásit pomocí az login příkazu. Tento přístup byste nikdy neměli používat k ověření pracovního postupu. Přihlašovací údaje v souboru YAML se ukládají ve formátu prostého textu. Každý, kdo má přístup k vašemu úložišti, může zobrazit a používat přihlašovací údaje. I když omezíte přístup k úložišti GitHub, kdykoli někdo naklonuje vaše úložiště, soubor YAML, který obsahuje přihlašovací údaje, bude na počítači této osoby.

Přihlášení k Azure

Než bude váš pracovní postup moct spouštět příkazy v prostředí Azure, musí se nejdřív přihlásit. Existuje akce, azure/login která zpracovává proces přihlášení. Musíte také udělit oprávnění pracovnímu postupu pro práci s ověřovacími tokeny.

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Tato azure/login akce vyžaduje, abyste zadali tři informace pro použití identity úlohy: ID aplikace Microsoft Entra, ID vašeho tenanta Microsoft Entra (adresáře) a ID předplatného Azure, se kterým chcete pracovat.

Po provedení této akce se spouštěč ověří a bude moct spouštět příkazy ve vašem prostředí Azure.

Nasazení souboru Bicep

Jakmile se pracovní postup přihlásí k Azure, může použít identitu úlohy ke spuštění nasazení Bicep. V GitHub Actions pomocí azure/arm-deploy akce zahájíte nasazení Bicep.

Poznámka:

Existují další způsoby, jak můžete nasadit soubory Bicep z GitHub Actions. Můžete například použít azure/CLI akci a pak zadat příkazy Azure CLI ke spuštění nasazení. Vzhledem k tomu, že je úloha azure/arm-deploy speciálně navržená pro nasazení, použijete ji v tomto modulu.

Tady je příklad, jak můžete nakonfigurovat krok pro použití azure/arm-deploy akce:

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    - uses: azure/arm-deploy@v1
      with:
        resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
        template: ./deploy/main.bicep
        parameters: environmentType=Test

Akce azure/arm-deploy přijímá několik parametrů, mezi které patří:

  • resourceGroupName: Název skupiny prostředků, do které chcete nasadit prostředky definované v souboru Bicep.
  • template: Cesta k souboru Bicep v úložišti. Cesta je relativní vzhledem ke kořenovému adresáři úložiště.
  • parameters: Označuje všechny hodnoty parametrů, které zadáte v době nasazení. V tomto příkladu poskytujeme hodnotu parametru environmentType .

Vzhledem k tomu, že předchozí azure/login akce už váš pracovní postup podepsala do Azure, provede se azure/arm-deploy tento krok u ověřeného spouštěče.

Proměnné

Pracovní postupy často obsahují hodnoty, které chcete opakovaně použít na více místech v souboru pracovního postupu. Tyto hodnoty můžete také uložit v horní části souboru pracovního postupu, abyste mohli snadno odkazovat a snadno měnit hodnoty. V pracovním postupu se proměnné, které definujete, zobrazí jako proměnné prostředí. K definování opakovaně použitelných hodnot použijte proměnné.

Vytvoření proměnné

V souboru pracovního postupu můžete vytvářet proměnné na různých úrovních. Pokud ale chcete, aby byly dostupné pro celý soubor pracovního postupu, definujete je v horní části souboru přímo pod příkazem on . K definování proměnných použijte env parametr:

env:
    AZURE_RESOURCEGROUP_NAME: gh-actions
    AZURE_WEBAPP_NAME: webapp-gh-actions

V předchozím příkladu zadáme dvě proměnné prostředí.

Použití proměnné v pracovním postupu

Po vytvoření proměnné použijete speciální syntaxi k odkazování na ni v souboru YAML pracovního postupu, například takto:

${{ env.AZURE_RESOURCEGROUP_NAME }}

Výchozí proměnné prostředí

GitHub Actions také používá výchozí proměnné prostředí. Výchozí proměnné prostředí obsahují předdefinované informace, které můžete chtít použít v pracovním postupu. Tady jsou některé z výchozích proměnných prostředí, které můžete použít ve svém pracovním postupu:

  • github.sha: Identifikátor potvrzení Gitu, který aktivoval spuštění pracovního postupu.
  • github.run_number: Jedinečné číslo pro každé spuštění konkrétního pracovního postupu v úložišti. Toto číslo začíná číslem 1 pro první spuštění pracovního postupu a zvýší se při každém novém spuštění. Tuto proměnnou můžete použít k pojmenování nasazení Azure, abyste mohli sledovat nasazení zpět ke konkrétnímu spuštění pracovního postupu, který ho aktivoval.

    Poznámka:

    V GitHub Actions můžete znovu spustit spuštění pracovního postupu. Když to uděláte, číslo spuštění se nezmění, takže byste neměli použít proměnnou github.run_number k určení počtu spuštění pracovního postupu.

Tajné kódy

Někdy potřebujete uložit tajné informace pro pracovní postup, který se má použít, jako je heslo databáze nebo klíč rozhraní API. Tajné kódy GitHubu slouží k bezpečnému ukládání informací obsahujících přihlašovací údaje nebo citlivé informace. Váš pracovní postup má přístup k hodnotě tajného kódu.

Tajné kódy se vytvářejí v nastavení úložiště GitHub. Tajný kód je k dispozici pro všechny pracovní postupy v úložišti. V pozdějším modulu se dozvíte o prostředích, která umožňují omezit použití tajných kódů na nasazení do konkrétního prostředí.

Upozorňující

Ve výchozím nastavení GitHub Actions obfuscuje hodnoty tajných proměnných v protokolech pracovního postupu, ale musíte postupovat i podle osvědčených postupů. Kroky pracovního postupu mají přístup k hodnotám tajných kódů. Pokud váš pracovní postup obsahuje krok, který nezpracuje tajný kód bezpečně, je možné, že se v protokolech pracovního postupu zobrazí hodnota tajného kódu. Vždy byste měli pečlivě zkontrolovat všechny změny definičního souboru pracovního postupu a ověřit, že tajné kódy nebudou chybně ošetřené.

Tajné kódy můžete vytvářet pomocí webového rozhraní GitHubu. Pokud chcete odkazovat na hodnotu tajného kódu v pracovním postupu, použijte následující syntaxi:

${{ secrets.NAME_OF_THE_SECRET }}

Po spuštění pracovního postupu má spouštěč, který spouští kroky nasazení, přístup k dešifrované hodnotě tajného kódu GitHubu. GitHub Actions je navržený tak, aby neodhalil tajné hodnoty v protokolech pracovního postupu.

Tip

Stejně jako parametry Bicep nemusíte vytvářet proměnné pro všechno. Je vhodné vytvořit proměnné pro cokoli, co se může mezi prostředími měnit, a tajné kódy GitHubu pro cokoli, co je tajné. Protože pracovní postup bude vždy používat stejný soubor Bicep, nemusíte pro cestu vytvořit proměnnou.

V tomto modulu použijete tajné kódy GitHubu k ukládání informací azure/login , které úloha potřebuje k přihlášení do Azure: vaše předplatné Microsoft Entra a ID tenanta a ID registrace aplikace identity úlohy.