Cvičení – nasazení šablon ARM v rámci úsilí o CI/CD pomocí GitHub Actions

Dokončeno

Tady nasadíte šablonu Azure Resource Manageru (ARM) z pracovního postupu GitHub Actions.

Důležitý

Toto cvičení provedete mimo prostředí Microsoft Learn. Toto cvičení vyžaduje, abyste měli vlastní předplatné Azure a můžou se vám účtovat poplatky. To je nezbytné, protože budete muset vytvořit hlavní službu, což není podporováno v předplatném sandboxu. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet, než začnete.

Vytvoření účtu a úložiště GitHub

Nejprve, pokud nemáte účet GitHub, vytvořte si ho teď na stránce pro vytvoření účtu GitHubu. (Je zdarma.)

snímek obrazovky se stránkou pro vytvoření účtu GitHub

Jakmile budete mít účet, přihlaste se a vytvořte nové úložiště, ve kterém můžete šablony uchovávat jako součást modelu infrastruktury jako kódu (IaC). Pokud chcete vytvořit úložiště (běžně označované jako úložiště v oboru), postupujte takto:

  1. V pravém horním rohu libovolné stránky na webu GitHubu použijte rozevírací nabídku + a vyberte Nové úložiště. Nebo vyberte zelené tlačítko Vytvořit úložiště, pokud je k dispozici.

    snímek obrazovky znázorňující výběry pro vytvoření úložiště GitHub

  2. Zadejte krátký a zapamatovatelný název úložiště. Například použijte Deploy-ARM-Template. Volitelně můžete přidat popis úložiště. Použijte například Nasazení první šablony ARM sGitHub Actions .

  3. Zvolte nastavení viditelnosti úložiště. Veřejná úložiště jsou přístupná všem uživatelům internetu. Privátní úložiště jsou přístupná jenom vám a lidem, se kterými explicitně sdílíte přístup. (Oba fungují s tímto cvičením.)

  4. V části Inicializovat toto úložiště pomocí:vyberte Přidat soubor README.

  5. Vyberte Vytvořit úložiště.

    snímek obrazovky znázorňující podrobnosti nového repozitáře

Vytvořili jste úložiště a inicializovali jste ho pomocí souboru README. Je čas potvrdit šablonu a soubor parametrů šablony do úložiště.

Poznámka

Soubory README jsou skvělým místem pro podrobnější popis projektu nebo přidání dokumentace, jako je instalace nebo použití projektu. Obsah souboru README se automaticky zobrazí na přední stránce úložiště.

Přidejte soubor šablony ARM do úložiště

  1. Na GitHubu přejděte na hlavní stránku úložiště.

  2. Nad seznamem souborů vyberte v rozevíracím seznamu Přidat soubor možnost Vytvořit nový soubor.

    Snímek obrazovky znázorňující výběry pro přidání šablony do úložiště

  3. Do pole název souboru zadejte název a příponu šablony. V našem cvičení použijte název azuredeploy.json. Zkopírujte a vložte následující šablonu do nového souboru GitHubu.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "VnetName": {
                "type": "string",
                "defaultValue": "VNet-001",
                "metadata": {
                    "description": "Virtual Network Name"
                }
            },
            "CostCenterIO": {
                "type": "string",
                "defaultValue": "12345",
                "metadata": {
                    "description": "Cost Center IO number for cross billing"
                }
            },
            "OwnerName": {
                "type": "string",
                "defaultValue": "John Smith",
                "metadata": {
                    "description": "Name of the stakeholder responsible for this resource"
                }
            }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  4. Do oddílu Potvrdit nový soubor přidejte popis a vyberte Potvrdit nový soubor uložte ho do úložiště.

    snímek obrazovky, který ukazuje uložení nové šablony do úložiště

Konfigurace ověřování mezi GitHub Actions a předplatným Azure

Pokud chcete nasadit všechny prostředky do Azure pomocí GitHub Actions, musíte vytvořit instanční objekt Azure a udělit mu oprávnění k vytváření prostředků definovaných ve vašich šablonách. Tento krok provedete v části Azure Cloud Shell na webu Azure Portal po přihlášení k předplatnému.

Vytvoření účtu služby

Pro nasazení prostředků Azure pracovní postup GitHub Actions potřebuje správnou vestavěnou roli přispěvatele.

Následující skript Azure CLI ukazuje, jak můžete vygenerovat instanční objekt Azure s oprávněními přispěvatele ve skupině prostředků Azure. V této skupině prostředků se nasazují prostředky definované v šabloně ARM.

projectName="GitHubActionExercise"
location="eastus"
resourceGroupName="${projectName}-rg"
appName="http://${projectName}"

# Create the resource group
az group create --name $resourceGroupName --location $location

# Store the resource group ID in a variable
scope=$(az group list --query "[?contains(name, '$resourceGroupName')].id" -o tsv)

# Create the service principal with contributor rights to the resource group we just created
az ad sp create-for-rbac --name $appName --role Contributor --scopes $scope --sdk-auth

Když jste přihlášeni ke svému předplatnému, na portálu vyberte ikonu Cloud Shell a otevřete prostředí v dolní části stránky.

animace, která zobrazuje otevření Cloud Shellu.

V příkazovém řádku použijte předchozí kód k vytvoření service principal. Zobrazí se následující výsledky. Zkopírujte část výsledků JSON (obsah v červeném rámečku na následujícím snímku obrazovky), protože ho potřebujete při konfiguraci tajného kódu na GitHubu.

cs-CZ: snímek obrazovky znázorňující výsledky vytvoření principálu služby v Azure

Zkopírujte výstup JSON a uložte ho jako tajný kód GitHubu v úložišti GitHub pomocí následujícího postupu v GitHubu: V úložišti GitHub vyberte kartu Nastavení. V nabídce vlevo vyberte rozevírací seznam tajné kódy a pak vyberte Codespaces.

Zadejte následující hodnoty a pak vyberte Přidat tajný kód:

  • Název: Zadejte AZURE_CREDENTIALS.
  • Tajný: Vložte výstup JSON, který jste dříve zkopírovali.

Snímek obrazovky znázorňující přidání nových tajných údajů service principal do tajemství GitHubu.

Tyto informace potřebujete k zadání autentizace v pracovním postupu.

Vytvoření pracovního postupu

Soubor pracovního postupu musí být uložený ve složce .github/workflows v kořenovém adresáři úložiště. Přípona souboru pracovního postupu může být .yml nebo .yaml.

Můžete vytvořit soubor pracovního postupu a pak soubor odeslat/nahrát do úložiště. Nebo ho můžete vytvořit v rozhraní GitHubu pomocí následujícího postupu:

  1. V úložišti GitHub vyberte v horní nabídce Actions a vyberte Nastavit pracovní postup sami.

    snímek obrazovky znázorňující výběry pro nastavení pracovního postupu

  2. Pokud dáváte přednost jinému názvu než main.yml, přejmenujte soubor pracovního postupu. Například použijte deployARMTemplate.yml.

  3. Obsah souboru .yml nahraďte následujícím kódem.

    Poznámka

    GitHub Marketplace obsahuje několik vlastních akcí, které můžete použít k nasazení šablon ARM. Tento modul používá zprostředkovatele marketplace s názvem Nasazení šablony Azure Resource Manageru (ARM).

    name: Deploy ARM Template
    
    on:
      push:
        branches:
          - main
    env:
      AZURE_SUBSCRIPTION_ID: << Subscription Id >>   # set this to your Azure Subscription Id
      AZURE_RESOURCE_GROUP: GitHubActionExercise-rg   # set this to your target resource group
    
    jobs:
      deploy-virtual-network-template:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source code
            uses: actions/checkout@main
    
          - name: Login to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Deploy ARM Template
            uses: azure/arm-deploy@v1
            with:
              scope: resourcegroup
              subscriptionId: ${{ env.AZURE_SUBSCRIPTION_ID }}
              resourceGroupName: ${{ env.AZURE_RESOURCE_GROUP }}
              template: ./azuredeploy.json
    

    Soubor pracovního postupu má tři části.

    • name: Název pracovního postupu.

    • on: Název události GitHubu, která aktivuje pracovní postup. Pracovní postup se aktivuje, když je událost push v hlavní větvi a upraví alespoň jeden soubor v hlavní větvi.

    • jobs: Běh pracovního postupu se skládá z jedné nebo více úloh. Pouze jedna úloha je nazývána deploy-virtual-network-template. Tato úloha má tři kroky.

      1. Podívejte se na zdrojový kód.
      2. Přihlaste se k Azure.
      3. Nasaďte šablonu ARM.

    Důležitý

    Ověřte, že název tajného kódu ve výrazu creds: ${{ secrets.AZURE_CREDENTIALS }} odpovídá názvu tajného klíče, který jste uložili do nastavení úložiště. Ověřte také, že název šablony ARM v kroku Deploy ARM Templatetemplate: $GITHUB_WORKSPACE/azuredeploy.json odpovídá názvu, který jste si uložili v předchozím úložišti.

    Poznámka

    Název skupiny prostředků by měl být GitHubActionExercise-rg, pokud jste při konfiguraci přihlašovacích údajů nasazení použili předchozí kód Azure CLI. Vygenerovaný název skupiny prostředků je název projektu s připojeným rg.

  4. Vyberte Spustit potvrzení. V případě potřeby přidejte komentář a popis.

  5. Ujistěte se, že je vybraná možnost Zapsat přímo do hlavní větve a pak vyberte Zapsat nový soubor (nebo Zapsat změny).

    cs-CZ: Snímek obrazovky ukazující spárování pracovního postupu do hlavní větve.

    Po vytvoření a potvrzení souboru pracovního postupu do hlavní větve úložiště se pracovní postup spustí automaticky, protože spouštěčem ve vašem pracovním postupu je potvrzení/odeslání změn do hlavní větve.

    on:
      push:
        branches:
          - main
    
  6. Přejděte do úložiště a zkontrolujte stav pracovního postupu.

    Snímek obrazovky zobrazící stav pracovního postupu

Zkontrolujte své nasazení

Po dokončení pracovního postupu přejděte na web Azure Portal a zkontrolujte stav nasazení.

V levém panelu vyberte Skupiny prostředků>GitHubActionExercise-rg. V podokně Nasazení ověřte, že nasazení proběhlo úspěšně.

Snímek obrazovky se stavem nasazení