Cvičení – nasazení šablon ARM v rámci CI/CD s použitím GitHub Actions
Tady nasadíte šablonu Azure Resource Manageru (ARM) z pracovního postupu GitHub Actions.
Důležité
Toto cvičení se provádí mimo prostředí Microsoft Learn. Toto cvičení vyžaduje, abyste měli vlastní předplatné Azure, přičemž vám mohou být účtovány poplatky. Je to nutné, protože budete muset vytvořit instanční objekt, který není podporovaný v sandboxovém předplatném. 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 GitHub. (Je bezplatný.)
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:
V pravém horním rohu libovolné stránky na webu GitHub použijte rozevírací nabídku + a vyberte New repository (Nové úložiště). Nebo vyberte zelené tlačítko Create repository (Vytvořit úložiště), pokud ho vidíte.
Zadejte krátký a zapamatovatelný název úložiště. Použijte například Deploy-ARM-Template. Volitelně můžete přidat popis úložiště. Použijte například Nasazení první šablony ARM pomocí GitHub Actions.
Zvolte nastavení viditelnosti úložiště. Veřejná úložiště jsou přístupná všem na internetu. Privátní úložiště jsou přístupná jen vám a lidem, se kterými explicitně sdílíte přístup. (Buď pracuje s tímto cvičením.)
V části Inicializace tohoto úložiště pomocí příkazu:, vyberte Přidat soubor README.
Vyberte Create repository (Vytvořit úložiště).
Vytvořili jste úložiště a inicializovali jste ho pomocí souboru README. Teď do tohoto úložiště zapíšete šablonu a soubor parametrů šablony.
Poznámka:
Soubory README jsou vhodným místem, kde můžete podrobněji popsat svůj projekt nebo přidat dokumentaci, která se týká například instalace nebo použití vašeho projektu. Obsah souboru README se automaticky objeví na úvodní stránce vašeho úložiště.
Zápis souboru šablony ARM do úložiště
V GitHubu přejděte na hlavní stránku úložiště.
Nad seznamem souborů vyberte v rozevíracím seznamu Add file (Přidat soubor) možnost Create new file (Vytvořit nový soubor).
Do pole s názvem souboru zadejte název a příponu šablony. Pro naše 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" } } ] } } ] }
V oddílu Commit new file (Zapsat nový soubor) přidejte popis a kliknutím na Commit new file uložte soubor do úložiště.
Konfigurace ověřování mezi GitHub Actions a vaším předplatným Azure
Pokud chcete k nasazení prostředků do Azure použít GitHub Actions, potřebujete vytvořit instanční objekt Azure a udělit mu oprávnění k vytváření prostředků, které jsou definované v šablonách. Tento krok provedete v části Azure Cloud Shell na webu Azure Portal po přihlášení k předplatnému.
Vytvoření instančního objektu
Aby mohl instanční objekt pracovního postupu GitHub Actions nasazovat prostředky Azure, potřebuje správného integrovaného přispěvatele.
V následujícím skriptu Azure CLI je vidět, jak můžete ve skupině prostředků Azure vygenerovat instanční objekt Azure s oprávněními přispěvatele. 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, vyberte na portálu ikonu Cloud Shell. V dolní části stránky se otevře příkazové prostředí.
V tomto prostředí použijte předchozí kód k vytvoření instančního objektu. 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.
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 vyberte Add secret (Přidat tajný kód):
- Název: Zadejte AZURE_CREDENTIALS.
- Tajný kód: Vložte výstup JSON, který jste zkopírovali dříve.
Tyto informace potřebujete k zadání ověřování 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ě. Soubor pracovního postupu může mít příponu .yml nebo .yaml.
Soubor pracovního postupu můžete vytvořit a pak ho nahrát do úložiště. Nebo ho můžete následujícím postupem vytvořit v rozhraní GitHubu:
V úložišti GitHubu vyberte v horní nabídce Actions (Akce) a pak vyberte Set up a workflow yourself (Vytvořit pracovní postup sami).
Pokud chcete použít jiný název než main.yml, přejmenujte soubor pracovního postupu. Použijte například deployARMTemplate.yml.
Obsah tohoto souboru .yml nahraďte následujícím kódem.
Poznámka:
GitHub Marketplace obsahuje několik integrovaných akcí, které můžete použít při nasazování š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
: Spuštění pracovního postupu se skládá z jedné nebo více úloh. Jedna z nich má názevdeploy-virtual-network-template
. Tato úloha má tři kroky.- Rezervace zdrojového kódu
- Přihlaste se do Azure.
- Nasazení šablony ARM
Důležité
Ověřte, že název tajného kódu ve výrazu
creds: ${{ secrets.AZURE_CREDENTIALS }}
se shoduje s názvem tajného kódu, který jste uložili do nastavení úložiště. Rovněž ověřte, že název šablony ARMtemplate: $GITHUB_WORKSPACE/azuredeploy.json
v krokuDeploy ARM Template
pro se shoduje s šablonou, kterou jste dříve uložili do úložiště.Poznámka:
Pokud jste při konfiguraci přihlašovacích údajů pro nasazení použili předchozí kód Azure CLI, měl by název skupiny být
GitHubActionExercise-rg
. Vygenerovaný název skupiny prostředků je název projektu, ke kterému se připojírg
.Vyberte Start commit (Spustit zápis). V případě potřeby přidejte komentář a popis.
Ujistěte se, že je vybráno potvrzení přímo do hlavní větve , a pak vyberte Potvrdit nový soubor (nebo Potvrdit změny).
Po vytvoření a potvrzení souboru pracovního postupu do hlavní větve úložiště se pracovní postup spustí automaticky, protože trigger ve vašem pracovním postupu je potvrzení/nasdílení změn do hlavní větve.
on: push: branches: - main
Přejděte do svého úložiště a zjistěte stav pracovního postupu.
Kontrola nasazení
Po dokončení pracovního postupu přejděte na Azure Portal a zkontrolujte stav nasazení.
V levém podokně vyberte Skupiny prostředků>GitHubActionExercise-rg. V podokně Nasazení ověřte, že nasazení proběhlo úspěšně.