Ćwiczenie – Wdrażaj szablony ARM jako część ciągłej integracji i ciągłego wdrażania za pomocą GitHub Actions
Wdrażasz tutaj szablon Azure Resource Manager (ARM) z przepływu pracy w GitHub Actions.
Ważny
To ćwiczenie wykonasz poza środowiskiem Microsoft Learn. To ćwiczenie wymaga posiadania własnej subskrypcji Azure i mogą być naliczane opłaty. Jest to wymagane, ponieważ należy utworzyć jednostkę usługi, która nie jest obsługiwana w subskrypcji piaskownicy. Jeśli nie masz jeszcze subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto .
Utwórz konto i repozytorium GitHub.
Najpierw, jeśli nie masz konta usługi GitHub, utwórz je teraz na stronie tworzenia konta usługi GitHub. (Jest bezpłatny).
Po utworzeniu konta zaloguj się i utwórz nowe repozytorium, w którym możesz przechowywać szablony w ramach modelu infrastruktury jako kodu (IaC). Aby utworzyć repozytorium (powszechnie znane jako repozytorium w branży), wykonaj następujące kroki:
W prawym górnym rogu dowolnej strony w witrynie GitHub użyj menu rozwijanego + i wybierz pozycję Nowe repozytorium. Możesz też wybrać zielony przycisk Utwórz repozytorium, jeśli tam jest.
Wprowadź krótką, pamiętną nazwę repozytorium. Na przykład użyj Deploy-ARM-Template. Opcjonalnie dodaj opis repozytorium. Na przykład użyj Wdrażanie mojego pierwszego szablonu ARM za pomocą GitHub Actions.
Wybierz ustawienie widoczności repozytorium. Repozytoria publiczne są dostępne dla wszystkich użytkowników w Internecie. Repozytoria prywatne są dostępne tylko dla Ciebie i osób, którym jawnie udostępniasz dostęp. (Obie opcje pasują do tego ćwiczenia.)
W obszarze Zainicjuj to repozytorium za pomocą polecenia:wybierz pozycję Dodaj plik README.
Wybierz pozycję Utwórz repozytorium.
Utworzono repozytorium i zainicjowano je za pomocą pliku README. Nadszedł czas, aby zatwierdzić szablon i plik parametrów szablonu w repozytorium.
Notatka
Pliki README to doskonałe miejsce do opisania projektu bardziej szczegółowo lub dodania dokumentacji, takiej jak instalowanie lub używanie projektu. Zawartość pliku README jest automatycznie wyświetlana na pierwszej stronie repozytorium.
Zatwierdź plik szablonu ARM do repozytorium
W usłudze GitHub przejdź do strony głównej repozytorium.
Nad listą plików na liście rozwijanej Dodaj plik wybierz pozycję Utwórz nowy plik.
W polu nazwa pliku wprowadź nazwę i rozszerzenie szablonu. W naszym ćwiczeniu użyj nazwy azuredeploy.json. Skopiuj i wklej następujący szablon do nowego pliku GitHub.
{ "$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" } } ] } } ] }
Dodaj opis w sekcji Commit new file (Zatwierdź nowy plik) i wybierz pozycję Commit new file (Zatwierdź nowy plik), aby zapisać go w repozytorium.
Konfigurowanie uwierzytelniania między funkcją GitHub Actions i subskrypcją platformy Azure
Aby wdrożyć wszystkie zasoby na platformie Azure przy użyciu funkcji GitHub Actions, musisz utworzyć jednostkę usługi platformy Azure i nadać jej uprawnienia do tworzenia zasobów zdefiniowanych w szablonach. Ten krok należy wykonać w sekcji usługi Azure Cloud Shell w witrynie Azure Portal po zalogowaniu się do subskrypcji.
Tworzenie jednostki usługi
Aby jednostka przepływu pracy funkcji GitHub Actions wdrażała zasoby platformy Azure, potrzebuje odpowiedniego wbudowanego współautora.
Poniższy skrypt interfejsu wiersza polecenia platformy Azure pokazuje, jak można wygenerować jednostkę usługi platformy Azure z uprawnieniami współautora w grupie zasobów platformy Azure. Ta grupa zasobów to miejsce, w którym przepływ pracy wdraża zasoby zdefiniowane w szablonie 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
W portalu, będąc zalogowanym do swojej subskrypcji, wybierz ikonę Cloud Shell, aby otworzyć powłokę na dole strony.
W powłoce użyj poprzedniego kodu, aby utworzyć głównego użytkownika usługi. Uzyskasz następujące wyniki. Skopiuj część wyników JSON (zawartość w czerwonym polu na zrzucie ekranu poniżej), ponieważ jest ona potrzebna podczas konfigurowania sekretu w GitHub.
Skopiuj dane wyjściowe JSON i zapisz je jako sekret GitHub w repozytorium GitHub, wykonując następujące kroki: W repozytorium GitHub wybierz kartę Ustawienia. W menu po lewej stronie wybierz menu rozwijane Wpisy tajne, a następnie wybierz pozycję Codespaces.
Wprowadź następujące wartości, a następnie wybierz Dodaj tajny wpis:
- Nazwa: wprowadź AZURE_CREDENTIALS.
- Tajny: Wklej wcześniej skopiowane dane JSON.
Te informacje są potrzebne do określenia uwierzytelniania w przepływie pracy.
Tworzenie przepływu pracy
Plik przepływu pracy musi być przechowywany w folderze .github/workflows w katalogu głównym repozytorium. Rozszerzenie pliku przepływu pracy może być .yml lub yaml.
Możesz utworzyć plik przepływu pracy, a następnie wypchnąć/przekazać plik do repozytorium. Możesz też użyć następującej procedury, aby utworzyć ją w interfejsie usługi GitHub:
W repozytorium GitHub wybierz pozycję Actions z górnego menu, a następnie wybierz pozycję Skonfiguruj przepływ pracy samodzielnie.
Zmień nazwę pliku przepływu pracy, jeśli wolisz inną nazwę zamiast main.yml. Na przykład użyj deployARMTemplate.yml.
Zastąp zawartość pliku .yml następującym kodem.
Notatka
Na witrynie GitHub Marketplace dostępnych jest kilka działań niestandardowych, których można użyć do wdrażania szablonów ARM. W tym module używany jest dostawca usług marketplace o nazwie Wdrażanie szablonu Azure Resource Manager (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
Plik przepływu pracy zawiera trzy sekcje.
name
: nazwa przepływu pracy.on
: nazwa zdarzenia usługi GitHub, które wyzwala przepływ pracy. Przepływ pracy jest wyzwalany, gdy zdarzenie wypychania występuje na gałęzi głównej i modyfikuje co najmniej jeden plik.jobs
: Uruchomienie przepływu pracy składa się z jednego lub więcej zadań. Tylko jedno zadanie jest nazywanedeploy-virtual-network-template
. To zadanie ma trzy kroki.- Zapoznaj się z kodem źródłowym.
- Zaloguj się do platformy Azure.
- Wdróż szablon ARM.
Ważny
Sprawdź, czy nazwa tajna w wyrażeniu
creds: ${{ secrets.AZURE_CREDENTIALS }}
odpowiada nazwie tajnej zapisanej w ustawieniach repozytorium. Sprawdź również, czy nazwa szablonu usługi ARM w krokuDeploy ARM Template
template: $GITHUB_WORKSPACE/azuredeploy.json
jest zgodna z nazwą zapisaną wcześniej w repozytorium.Notatka
Nazwa grupy zasobów powinna być
GitHubActionExercise-rg
, jeśli podczas konfigurowania poświadczeń wdrożenia użyto poprzedniego kodu interfejsu wiersza polecenia platformy Azure. Wygenerowana nazwa grupy zasobów to nazwa projektu z dołączonymrg
.Wybierz pozycję Rozpocznij zatwierdzanie. W razie potrzeby dodaj komentarz i opis.
Upewnij się, że opcja Zatwierdź bezpośrednio do gałęzi głównej jest zaznaczona, a następnie wybierz Zatwierdź nowy plik (lub Zatwierdź zmiany).
Po utworzeniu i zatwierdzeniu pliku przepływu pracy w głównej gałęzi repozytorium, przepływ pracy zostanie uruchomiony automatycznie, ponieważ wyzwalaczem w przepływie pracy jest zatwierdzenie lub wypchnięcie do gałęzi głównej.
on: push: branches: - main
Przejdź do repozytorium i sprawdź stan przepływu pracy.
Sprawdź swoje wdrożenie
Po zakończeniu przepływu pracy przejdź do witryny Azure Portal, aby sprawdzić stan wdrożenia.
W okienku po lewej stronie wybierz pozycję Grupy zasobów>GitHubActionExercise-rg. W panelu wdrożenia sprawdź, czy wdrożenie zakończyło się pomyślnie.