Oefening: uw omgeving instellen

Voltooid

Belangrijk

U hebt uw eigen Azure-abonnement nodig om deze oefening te kunnen uitvoeren. Dit kan kosten met zich meebrengen. Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Voordat u aan de websitewerkstroom van uw speelgoedbedrijf begint te werken, moet u uw omgeving configureren. In deze les zorgt u ervoor dat uw Azure- en GitHub-omgevingen zijn ingesteld om de rest van deze module te voltooien.

Als u aan deze doelstellingen wilt voldoen, gaat u als volgt te werk:

  • Stel een GitHub-opslagplaats in voor deze module.
  • Kloon de opslagplaats van het project naar uw computer.
  • Maak twee workloadidentiteiten in Microsoft Entra-id.
  • Maak twee resourcegroepen in Azure.
  • Maak twee geheimen en omgevingen in GitHub.

De GitHub-opslagplaats ophalen

Hier zorgt u ervoor dat uw GitHub-opslagplaats is ingesteld om de rest van deze module te voltooien. U stelt deze in door een nieuwe opslagplaats te maken op basis van een sjabloonopslagplaats. De sjabloonopslagplaats bevat de bestanden die u nodig hebt om aan de slag te gaan voor deze module.

De modules in dit leertraject maken deel uit van een voortgang. Voor leerdoeleinden heeft elke module een bijbehorende GitHub-sjabloonopslagplaats.

Tip

Zelfs als u de vorige module in het leertraject hebt voltooid, volgt u deze instructies om een nieuwe opslagplaats te maken en ervoor te zorgen dat u deze een nieuwe naam geeft.

Beginnen vanuit de sjabloonopslagplaats

Voer een sjabloon uit waarmee uw GitHub-opslagplaats wordt ingesteld.

Voer op de GitHub-site de volgende stappen uit om een opslagplaats te maken op basis van de sjabloon:

  1. Selecteer Deze sjabloon>gebruiken. Maak een nieuwe opslagplaats.

    Schermopname van de GitHub-interface met de sjabloonopslagplaats, met de knop Deze sjabloon gebruiken gemarkeerd.

  2. Noteer de naam van uw GitHub-gebruikersnaam of -organisatie. In het voorbeeld is de GitHub-gebruikersnaam mygithubuser. U hebt deze naam binnenkort nodig.

  3. Voer een naam in voor uw nieuwe project, zoals speelgoedwebsiteomgevingen.

  4. Selecteer de optie Openbaar .

    Wanneer u uw eigen opslagplaatsen maakt, wilt u deze mogelijk privé maken. In deze module werkt u met enkele functies van GitHub die alleen werken met openbare opslagplaatsen en met GitHub Enterprise-accounts.

  5. Selecteer Opslagplaats maken van sjabloon.

    Schermopname van de GitHub-interface met de pagina voor het maken van opslagplaatsen.

Belangrijk

De laatste oefening in deze module bevat belangrijke opschoonstappen. Zorg ervoor dat u de opschoonstappen volgt, zelfs als u deze module niet voltooit.

De opslagplaats klonen

U hebt nu een kopie van de sjabloonopslagplaats in uw eigen account. Kloon vervolgens deze opslagplaats lokaal, zodat u eraan kunt gaan werken.

  1. Selecteer Code en selecteer het kopieerpictogram.

    Schermopname van de GitHub-interface met de nieuwe opslagplaats, met de knop U RL-kopie van de opslagplaats gemarkeerd.

  2. Open Visual Studio Code.

  3. Open een Visual Studio Code-terminalvenster door Terminal> te selecteren. Het venster wordt meestal onderaan het scherm geopend.

  4. Navigeer in de terminal naar de map waar u de GitHub-opslagplaats op uw lokale computer wilt klonen. Als u bijvoorbeeld de opslagplaats wilt klonen naar de map speelgoedwebsiteomgevingen , voert u de volgende opdracht uit:

    cd toy-website-environments
    
  5. Typ git clone en plak de URL die u eerder hebt gekopieerd. Dit ziet er ongeveer als volgt uit:

    git clone https://github.com/mygithubuser/toy-website-environments.git
    
  6. Open Visual Studio Code opnieuw in de opslagplaatsmap door de volgende opdracht uit te voeren in de Visual Studio Code-terminal:

    code -r toy-website-environments
    

Aanmelden bij Azure

Als u wilt werken met resourcegroepen in Azure, meldt u zich aan bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u de Azure CLI-hulpprogramma's hebt geïnstalleerd.

  1. Selecteer nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.

    De standaardshell is meestal pwsh, zoals wordt weergegeven aan de rechterkant van het terminalvenster.

    Schermopname van het Visual Studio Code-terminalvenster waarin pwsh wordt weergegeven als de shell-optie.

  2. Selecteer de vervolgkeuzelijst Profiel starten en selecteer vervolgens Azure Cloud Shell (Bash).

    Schermopname van het visual Studio Code-terminalvenster. De vervolgkeuzelijst terminal shell en het menu-item Azure Cloud Shell (Bash) worden weergegeven.

    Er wordt een nieuwe shell geopend.

Aanmelden bij Azure met behulp van de Azure CLI

  1. Voer in de Visual Studio Code-terminal de volgende opdracht uit om u aan te melden bij Azure:

    az login
    
  2. Meld u aan bij uw Azure-account in de browser die wordt geopend.

Als u wilt werken met resourcegroepen in Azure, meldt u zich aan bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u Azure PowerShell hebt geïnstalleerd.

  1. Selecteer nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.

    De standaardshell is meestal pwsh, zoals wordt weergegeven aan de rechterkant van het terminalvenster.

    Schermopname van het Visual Studio Code-terminalvenster waarin pwsh wordt weergegeven als de shell-optie.

  2. Selecteer de vervolgkeuzelijst Profiel starten en selecteer vervolgens Azure Cloud Shell (PowerShell).

    Schermopname van het visual Studio Code-terminalvenster. De vervolgkeuzelijst terminal shell en het menu-item Azure Cloud Shell (PowerShell) worden weergegeven.

    Er wordt een nieuwe shell geopend.

Aanmelden bij Azure met behulp van Azure PowerShell

  1. Voer in de Visual Studio Code-terminal de volgende opdracht uit om u aan te melden bij Azure:

    Connect-AzAccount
    
  2. Meld u aan bij uw Azure-account in de browser die wordt geopend.

Twee workloadidentiteiten maken

Maak vervolgens twee workloadidentiteiten in Microsoft Entra ID: een voor uw testomgeving en een andere voor uw productieomgeving.

Als u de workloadidentiteiten wilt maken, worden de Azure CLI-opdrachten gebruikt jq om gegevens uit JSON-uitvoer te parseren. Als u deze niet hebt jq geïnstalleerd, kunt u Bash in Azure Cloud Shell gebruiken om de workloadidentiteit, resourcegroep en roltoewijzing te maken en de GitHub-geheimen voor te bereiden.

  1. Voer de volgende code uit om variabelen te definiëren voor uw GitHub-gebruikersnaam en de naam van uw opslagplaats. Zorg ervoor dat u vervangt door mygithubuser uw GitHub-gebruikersnaam, die u eerder in deze oefening hebt genoteerd. Zorg er ook voor dat u de juiste Naam van de GitHub-opslagplaats opgeeft.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-environments'
    
  2. Maak een workloadidentiteit voor implementaties in uw testomgeving. De workloadidentiteit heeft twee federatieve referenties nodig: er wordt één gebruikt wanneer de werkstroom de validatietaak uitvoert, omdat deze taak niet is gekoppeld aan een GitHub-omgeving. De tweede wordt gebruikt wanneer de werkstroom de implementatietaak uitvoert, die wordt uitgevoerd op de GitHub-testomgeving .

    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. Voer de volgende code uit waarmee een vergelijkbare workloadidentiteit en federatieve referenties voor de productieomgeving worden gemaakt:

    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. Voer de volgende code uit om variabelen te definiëren voor uw GitHub-gebruikersnaam en de naam van uw opslagplaats. Zorg ervoor dat u vervangt door mygithubuser uw GitHub-gebruikersnaam, die u eerder in deze oefening hebt genoteerd. Zorg er ook voor dat u de juiste Naam van de GitHub-opslagplaats opgeeft.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-environments'
    
  2. Voer de volgende code uit om een workloadidentiteit voor de testomgeving te maken en deze te koppelen aan uw GitHub-opslagplaats:

    $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. Voer de volgende code uit, die een vergelijkbaar proces voor de productieomgeving volgt:

    $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"
    

Twee resourcegroepen maken in Azure en de identiteitstoegang van de workload verlenen

Maak vervolgens een resourcegroep voor elke omgeving. Dit proces verleent ook de respectieve workload-id de rol Inzender voor de resourcegroep, waarmee uw werkstroom kan worden geïmplementeerd in de resourcegroep.

  1. Als u de resourcegroep van de testomgeving wilt maken en de workloadidentiteit toegang wilt verlenen, voert u de volgende Azure CLI-opdrachten uit in de Visual Studio Code-terminal:

    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. Voer een vergelijkbaar proces uit om de resourcegroep van de productieomgeving te maken:

    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. Als u de resourcegroep van de testomgeving wilt maken en de workloadidentiteit toegang wilt verlenen, voert u de volgende Azure PowerShell-opdrachten uit in de Visual Studio Code-terminal:

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location eastus
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Voer een vergelijkbaar proces uit om de resourcegroep van de productieomgeving te maken:

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location eastus
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

GitHub-geheimen voorbereiden

Voer de volgende code uit om de waarden weer te geven die u als GitHub-geheimen moet maken:

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)"

GitHub-geheimen maken

U hebt twee workloadidentiteiten en de resourcegroepen gemaakt waar ze worden geïmplementeerd. Maak vervolgens geheimen in GitHub Actions.

  1. Navigeer in uw browser naar uw GitHub-opslagplaats.

  2. Selecteer >>en variabelenacties.

  3. Selecteer Nieuw opslagplaatsgeheim.

    Schermopname van de GitHub-interface met de pagina Geheimen, met de knop Opslagplaatsgeheim maken gemarkeerd.

  4. Geef het geheim de naam AZURE_CLIENT_ID_TEST.

  5. Plak in het veld Waarde de GUID vanaf de eerste regel van de terminaluitvoer. Neem geen AZURE_CLIENT_ID_TESTspaties op, de dubbele punt of spaties in de waarde.

  6. Selecteer Geheim toevoegen.

    Schermopname van de GitHub-interface met de pagina Nieuw geheim, met de naam en waarde voltooid en de knop Geheim toevoegen gemarkeerd.

  7. Herhaal het proces om de geheimen voor AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID en AZURE_SUBSCRIPTION_ID te maken en kopieer de waarden uit de bijbehorende velden in de terminaluitvoer.

  8. Controleer of in uw lijst met geheimen nu alle vier de geheimen worden weergegeven.

    Schermopname van de GitHub-interface met de lijst met geheimen, inclusief de test- en productiegeheimen.

Omgevingen maken in GitHub

  1. Ga in uw browser naar Instellingenomgevingen>.

  2. Selecteer Nieuwe omgeving.

    Schermopname van de GitHub-interface met de pagina Omgevingen en de knop voor het maken van een omgeving.

  3. Voer Test in als de omgevingsnaam.

    Schermopname van de GitHub-pagina voor een nieuwe omgeving met de naam Test, met de knop Omgeving configureren.

  4. Selecteer Omgeving configureren.

  5. Selecteer Omgevingen om terug te keren naar de lijst met omgevingen.

    Schermopname van de GitHub-pagina voor een nieuwe omgeving met de naam Test, met de koppeling Omgeving.

  6. Herhaal het proces om een andere omgeving met de naam Productie te maken.

    Laat de configuratiepagina van de productieomgeving geopend.

Een beveiligingsregel toevoegen aan de productieomgeving

  1. Selecteer Vereiste revisoren.

  2. Typ in het tekstvak Personen of teams zoeken uw eigen GitHub-gebruikersnaam en selecteer uzelf.

    Schermopname van de GitHub-interface waarop de pagina voor het toevoegen van een vereiste revisor wordt weergegeven, met ingevulde details en de knop Beveiligingsregels opslaan.

  3. Selecteer Beveiligingsregels opslaan.

  4. Selecteer Omgevingen om de configuratie af te sluiten.