Cvičení – nastavení prostředí

Dokončeno

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:

  1. Vyberte Použít tuto šablonu>Vytvořit nové úložiště.

    Snímek obrazovky s rozhraním GitHubu zobrazujícím úložiště šablony se zvýrazněným tlačítkem Použít tuto šablonu

  2. 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.

  3. Zadejte název nového projektu, například prostředí toy-website-environment.

  4. 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.

  5. Vyberte možnost Create repository from template (Vytvořit úložiště ze šablony).

    Snímek obrazovky s rozhraním GitHubu zobrazující stránku pro vytvoření úložiště

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.

  1. Vyberte Kód a vyberte ikonu kopírování.

    Snímek obrazovky s rozhraním GitHubu zobrazujícím nové úložiště se zvýrazněným tlačítkem kopírování U R L úložiště

  2. Otevřete Visual Studio Code.

  3. 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.

  4. 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
    
  5. 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
    
  6. 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 .

  1. 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.

    Snímek obrazovky okna terminálu editoru Visual Studio Code, ve kterém se jako možnost prostředí zobrazuje pwsh

  2. Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (Bash).

    Snímek obrazovky s oknem terminálu editoru Visual Studio Code Zobrazí se rozevírací seznam prostředí terminálu a položka nabídky Azure Cloud Shell (Bash).

    Otevře se nové prostředí.

Přihlášení k Azure pomocí Azure CLI

  1. V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:

    az login
    
  2. 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.

  1. 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.

    Snímek obrazovky okna terminálu editoru Visual Studio Code, ve kterém se jako možnost prostředí zobrazuje pwsh

  2. Vyberte rozevírací seznam Spustit profil a pak vyberte Azure Cloud Shell (PowerShell).

    Snímek obrazovky s oknem terminálu editoru Visual Studio Code Zobrazí se rozevírací seznam prostředí terminálu a položka nabídky Azure Cloud Shell (PowerShell).

    Otevře se nové prostředí.

Přihlášení k Azure přes Azure PowerShell

  1. V terminálu editoru Visual Studio Code spusťte následující příkaz pro přihlášení k Azure:

    Connect-AzAccount
    
  2. 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.

  1. 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'
    
  2. 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\"]}"
    
  3. 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\"]}"
    
  1. 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'
    
  2. 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"
    
  3. 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ů.

  1. 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
    
  2. 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
    
  1. 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)
    
  2. 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.

  1. V prohlížeči přejděte do úložiště GitHub.

  2. Vyberte Nastavení>tajných kódů a proměnných>Akce.

  3. Vyberte Nový tajný klíč úložiště.

    Snímek obrazovky s rozhraním GitHubu se stránkou Tajné kódy se zvýrazněným tlačítkem Vytvořit tajný kód úložiště

  4. Pojmenujte tajný AZURE_CLIENT_ID_TEST.

  5. Do pole Hodnota vložte identifikátor GUID z prvního řádku výstupu terminálu. Nezahrnujte AZURE_CLIENT_ID_TESTdo hodnoty dvojtečku ani mezery.

  6. Vyberte Add secret (Přidat tajný kód).

    Snímek obrazovky s rozhraním GitHubu se stránkou Nový tajný kód se zvýrazněným názvem a hodnotou a zvýrazněným tlačítkem Přidat tajný kód

  7. 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.

  8. Ověřte, že seznam tajných kódů teď zobrazuje všechny čtyři tajné kódy.

    Snímek obrazovky s rozhraním GitHubu zobrazující seznam tajných kódů, včetně testovacích i produkčních tajných kódů

Vytváření prostředí na GitHubu

  1. V prohlížeči přejděte do nastavení>prostředí.

  2. Vyberte Nové prostředí.

    Snímek obrazovky s rozhraním GitHubu, které zobrazuje stránku Prostředí a tlačítko pro vytvoření prostředí

  3. Jako název prostředí zadejte Test .

    Snímek obrazovky se stránkou GitHubu pro nové prostředí s názvem Test a tlačítkem Konfigurovat prostředí

  4. Vyberte Konfigurovat prostředí.

  5. Výběrem možnosti Prostředí se vrátíte do seznamu prostředí.

    Snímek obrazovky se stránkou GitHubu pro nové prostředí s názvem Test a odkazem Prostředí

  6. 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í

  1. Vyberte Požadované revidujícím.

  2. Do textového pole Hledat lidi nebo týmy zadejte vlastní uživatelské jméno GitHubu a vyberte sami sebe.

    Snímek obrazovky s rozhraním GitHubu, které zobrazuje stránku pro přidání požadovaného revidujících, s dokončenými podrobnostmi a tlačítkem Uložit pravidla ochrany

  3. Vyberte Uložit pravidla ochrany.

  4. Výběrem možnosti Prostředí ukončete konfiguraci.