Cvičení – nastavení prostředí
Důležité
K provedení tohoto cvičení potřebujete vlastní předplatné Azure a mohou se vám účtovat poplatky. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet, než začnete.
Než začnete pracovat na pracovním postupu webu vaší společnosti, musíte nakonfigurovat své prostředí. V této lekci se ujistěte, že jsou vaše prostředí Azure a GitHub nastavená tak, aby dokončila zbytek tohoto modulu.
Abyste splnili tyto cíle, postupujte takto:
- Nastavte úložiště GitHub pro tento modul.
- Naklonujte úložiště projektu do počítače.
- Vytvořte dvě identity úloh v Microsoft Entra ID.
- Vytvořte v Azure dvě skupiny prostředků.
- Vytvoření dvou tajných kódů a prostředí na GitHubu
Získání úložiště GitHub
Tady se ujistěte, že je vaše úložiště GitHub nastavené tak, aby dokončilo zbytek tohoto modulu. Nastavíte ho tak, že vytvoříte nové úložiště založené na úložišti šablony. Úložiště šablon obsahuje soubory, které potřebujete pro tento modul začít.
Moduly v tomto studijním programu jsou součástí průběhu. Pro účely výuky má každý modul přidružené úložiště šablon GitHubu.
Tip
I když jste dokončili předchozí modul ve studijním programu, podle těchto pokynů vytvořte nové úložiště a ujistěte se, že jste mu dali nový název.
Začínáme z úložiště šablon
Spusťte šablonu, která nastaví úložiště GitHub.
Na webu GitHubu pomocí následujícího postupu vytvořte úložiště ze šablony:
Vyberte Použít tuto šablonu>Vytvořit nové úložiště.
Poznamenejte si název uživatelského jména nebo organizace GitHubu. V tomto příkladu je uživatelské jméno GitHubu mygithubuser. Tento název budete brzy potřebovat.
Zadejte název nového projektu, například prostředí toy-website-environment.
Vyberte veřejnou možnost.
Když vytváříte vlastní úložiště, můžete je chtít nastavit jako soukromé. V tomto modulu budete pracovat s některými funkcemi GitHubu, které fungují jenom s veřejnými úložišti a s účty GitHub Enterprise.
Vyberte možnost Create repository from template (Vytvořit úložiště ze šablony).
Důležité
Poslední cvičení v tomto modulu obsahuje důležité kroky čištění. Nezapomeňte postupovat podle kroků čištění, i když tento modul nedokončíte.
Klonování úložiště
Teď máte kopii úložiště šablony ve svém vlastním účtu. Dále naklonujte toto úložiště místně, abyste mohli začít pracovat.
Vyberte Kód a vyberte ikonu kopírování.
Otevřete Visual Studio Code.
Výběrem možnosti Terminálový>nový terminál otevřete okno terminálu editoru Visual Studio Code. Okno se obvykle otevře v dolní části obrazovky.
V terminálu přejděte do adresáře, do kterého chcete naklonovat úložiště GitHub na místním počítači. Pokud chcete například naklonovat úložiště do složky toy-website-environment , spusťte následující příkaz:
cd toy-website-environments
Zadejte
git clone
a vložte dříve zkopírovanou adresu URL, která vypadá přibližně takto:git clone https://github.com/mygithubuser/toy-website-environments.git
Znovu otevřete Visual Studio Code ve složce úložiště spuštěním následujícího příkazu v terminálu editoru Visual Studio Code:
code -r toy-website-environments
Přihlášení k Azure
Pokud chcete pracovat se skupinami prostředků v Azure, přihlaste se ke svému účtu Azure z terminálu Visual Studio Code. Ujistěte se, že jste nainstalovali nástroje Azure CLI .
V nabídce Terminál vyberte Nový terminál. Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Výchozí prostředí je obvykle pwsh, jak je znázorněno na pravé straně okna terminálu.
Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (Bash).
Otevře se nové prostředí.
Přihlášení k Azure pomocí Azure CLI
V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:
az login
V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.
Pokud chcete pracovat se skupinami prostředků v Azure, přihlaste se ke svému účtu Azure z terminálu Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell.
V nabídce Terminál vyberte Nový terminál. Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Výchozí prostředí je obvykle pwsh, jak je znázorněno na pravé straně okna terminálu.
Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (PowerShell).
Otevře se nové prostředí.
Přihlášení k Azure přes Azure PowerShell
V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:
Connect-AzAccount
V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.
Vytvoření dvou identit úloh
Dále vytvořte dvě identity úloh v ID Microsoft Entra: jednu pro testovací prostředí a druhou pro produkční prostředí.
K vytvoření identit úloh se příkazy Azure CLI používají jq
k analýze dat z výstupu JSON. Pokud nemáte jq
nainstalovaný, můžete pomocí bashe v Azure Cloud Shellu vytvořit identitu úlohy, skupinu prostředků a přiřazení role a připravit tajné kódy GitHubu.
Spuštěním následujícího kódu definujte proměnné pro uživatelské jméno GitHubu a název úložiště. Nezapomeňte nahradit
mygithubuser
uživatelské jméno GitHubu, které jste si poznamenali dříve v tomto cvičení. Ujistěte se také, že zadáte správný název úložiště GitHub.githubOrganizationName='mygithubuser' githubRepositoryName='toy-website-environments'
Vytvořte identitu úlohy pro nasazení do testovacího prostředí. Identita úlohy potřebuje dvě federované přihlašovací údaje: jedna se použije při spuštění úlohy ověření pracovního postupu, protože tato úloha není přidružená k prostředí GitHubu. Druhá se použije, když pracovní postup spustí úlohu nasazení, která se spouští v testovacím prostředí GitHubu.
testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-environments-test') testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id') testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId') az ad app federated-credential create \ --id $testApplicationRegistrationObjectId \ --parameters "{\"name\":\"toy-website-environments-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}" az ad app federated-credential create \ --id $testApplicationRegistrationObjectId \ --parameters "{\"name\":\"toy-website-environments-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
Spusťte následující kód, který vytvoří podobnou identitu úlohy a federované přihlašovací údaje pro produkční prostředí:
productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-environments-production') productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id') productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId') az ad app federated-credential create \ --id $productionApplicationRegistrationObjectId \ --parameters "{\"name\":\"toy-website-environments-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}" az ad app federated-credential create \ --id $productionApplicationRegistrationObjectId \ --parameters "{\"name\":\"toy-website-environments-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
Spuštěním následujícího kódu definujte proměnné pro uživatelské jméno GitHubu a název úložiště. Nezapomeňte nahradit
mygithubuser
uživatelské jméno GitHubu, které jste si poznamenali dříve v tomto cvičení. Ujistěte se také, že zadáte správný název úložiště GitHub.$githubOrganizationName = 'mygithubuser' $githubRepositoryName = 'toy-website-environments'
Spusťte následující kód, který vytvoří identitu úlohy pro testovací prostředí a přidruží ji k úložišti GitHub:
$testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-environments-test' New-AzADAppFederatedCredential ` -Name 'toy-website-environments-test' ` -ApplicationObjectId $testApplicationRegistration.Id ` -Issuer 'https://token.actions.githubusercontent.com' ` -Audience 'api://AzureADTokenExchange' ` -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test" New-AzADAppFederatedCredential ` -Name 'toy-website-environments-test-branch' ` -ApplicationObjectId $testApplicationRegistration.Id ` -Issuer 'https://token.actions.githubusercontent.com' ` -Audience 'api://AzureADTokenExchange' ` -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
Spusťte následující kód, který se řídí podobným procesem pro produkční prostředí:
$productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-environments-production' New-AzADAppFederatedCredential ` -Name 'toy-website-environments-production' ` -ApplicationObjectId $productionApplicationRegistration.Id ` -Issuer 'https://token.actions.githubusercontent.com' ` -Audience 'api://AzureADTokenExchange' ` -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production" New-AzADAppFederatedCredential ` -Name 'toy-website-environments-production-branch' ` -ApplicationObjectId $productionApplicationRegistration.Id ` -Issuer 'https://token.actions.githubusercontent.com' ` -Audience 'api://AzureADTokenExchange' ` -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
Vytvoření dvou skupin prostředků v Azure a udělení přístupu k identitě úloh
Dále vytvořte skupinu prostředků pro každé prostředí. Tento proces také udělí příslušné identitě úlohy roli Přispěvatel ve skupině prostředků, která umožňuje vašemu pracovnímu postupu nasazení do skupiny prostředků.
Pokud chcete vytvořit skupinu prostředků testovacího prostředí a udělit jí přístup k identitě úlohy, spusťte v terminálu Visual Studio Code následující příkazy Azure CLI:
testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location eastus --query id --output tsv) az ad sp create --id $testApplicationRegistrationObjectId az role assignment create \ --assignee $testApplicationRegistrationAppId \ --role Contributor \ --scope $testResourceGroupResourceId
Spuštěním podobného procesu vytvořte skupinu prostředků produkčního prostředí:
productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location eastus --query id --output tsv) az ad sp create --id $productionApplicationRegistrationObjectId az role assignment create \ --assignee $productionApplicationRegistrationAppId \ --role Contributor \ --scope $productionResourceGroupResourceId
Pokud chcete vytvořit skupinu prostředků testovacího prostředí a udělit jí přístup k identitě úlohy, spusťte následující příkazy Azure PowerShellu v terminálu editoru Visual Studio Code:
$testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location eastus New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId) New-AzRoleAssignment ` -ApplicationId $($testApplicationRegistration.AppId) ` -RoleDefinitionName Contributor ` -Scope $($testResourceGroup.ResourceId)
Spuštěním podobného procesu vytvořte skupinu prostředků produkčního prostředí:
$productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location eastus New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId) New-AzRoleAssignment ` -ApplicationId $($productionApplicationRegistration.AppId) ` -RoleDefinitionName Contributor ` -Scope $($productionResourceGroup.ResourceId)
Příprava tajných kódů GitHubu
Spuštěním následujícího kódu zobrazte hodnoty, které potřebujete vytvořit jako tajné kódy GitHubu:
echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"
Vytvoření tajných kódů GitHubu
Vytvořili jste dvě identity úloh a skupiny prostředků, do kterých se nasadí. Dále vytvořte tajné kódy v GitHub Actions.
V prohlížeči přejděte do úložiště GitHub.
Vyberte Nastavení>tajných kódů a proměnných>Akce.
Vyberte Nový tajný klíč úložiště.
Pojmenujte tajný AZURE_CLIENT_ID_TEST.
Do pole Hodnota vložte identifikátor GUID z prvního řádku výstupu terminálu. Nezahrnujte
AZURE_CLIENT_ID_TEST
do hodnoty dvojtečku ani mezery.Vyberte Add secret (Přidat tajný kód).
Opakujte proces a vytvořte tajné kódy pro AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID a AZURE_SUBSCRIPTION_ID a zkopírujte hodnoty z odpovídajících polí ve výstupu terminálu.
Ověřte, že seznam tajných kódů teď zobrazuje všechny čtyři tajné kódy.
Vytváření prostředí na GitHubu
V prohlížeči přejděte do nastavení>prostředí.
Vyberte Nové prostředí.
Jako název prostředí zadejte Test .
Vyberte Konfigurovat prostředí.
Výběrem možnosti Prostředí se vrátíte do seznamu prostředí.
Opakujte proces a vytvořte další prostředí s názvem Production.
Nechte otevřenou stránku konfigurace produkčního prostředí.
Přidání pravidla ochrany do produkčního prostředí
Vyberte Požadované revidujícím.
Do textového pole Hledat lidi nebo týmy zadejte vlastní uživatelské jméno GitHubu a vyberte sami sebe.
Vyberte Uložit pravidla ochrany.
Výběrem možnosti Prostředí ukončete konfiguraci.