Übung: Verwenden von Bicep-Parametern mit mehreren Umgebungen
Nachdem Ihr Workflow nun in beiden Umgebungen bereitgestellt wird, können Sie die Drittanbieter-API für Produktüberprüfungen integrieren.
Ihr Websiteteam hat Ihnen die API-Schlüssel und URLs bereitgestellt, die Ihre Website für den Zugriff auf den Dienst verwenden sollte. Es gibt unterschiedliche Werte für Ihre Test- und Produktionsumgebung. In dieser Lerneinheit aktualisieren Sie Ihren Workflow, um die einzelnen Umgebungen mit den richtigen Einstellungen für die Produktüberprüfungs-API zu konfigurieren.
In dem Prozess gehen Sie wie folgt vor:
- Erstellen von Geheimnissen für die Überprüfungs-API-Schlüssel für die einzelnen Umgebungen.
- Aktualisieren des Workflows mit den richtigen Eingabe- und Geheimniswerten für die jeweilige Umgebung.
- Aktualisieren Sie Ihre Bicep-Datei, um die Einstellungen zu übergeben, die Sie für die Produktüberprüfungs-API benötigen.
- Überprüfen der Pipelineergebnisse und Änderungen an Ihrer Azure-Umgebung.
Hinzufügen von Geheimnissen
Sie entscheiden sich dafür, die API-Schlüssel in GitHub-Geheimnissen zu speichern, um sicherzustellen, dass sie angemessen geschützt sind.
Wechseln Sie in Ihrem Browser zu Einstellungen>Geheimnisse und Variablen>Aktionen.
Wählen Sie die Schaltfläche New repository secret (Neues Repositorygeheimnis) aus.
Geben REVIEW_API_KEY_TEST als Geheimnisnamen und sandboxsecretkey als Wert ein.
Klicken Sie auf Add secret (Geheimnis hinzufügen).
Wiederholen Sie den Vorgang, um ein weiteres Geheimnis namens REVIEW_API_KEY_PRODUCTION und productionsecretkey als Wert hinzuzufügen. Klicken Sie auf Add secret (Geheimnis hinzufügen).
Aktualisieren der Datei „deploy.yml“, sodass die neuen Einstellungen verwendet werden
Öffnen Sie in Visual Studio Code die Datei deploy.yml.
Aktualisieren Sie den Workflowtrigger so, dass er neue Werte für die Einstellungen
inputs
undsecrets
enthält:on: workflow_call: inputs: environmentType: required: true type: string resourceGroupName: required: true type: string reviewApiUrl: required: true type: string secrets: AZURE_CLIENT_ID: required: true AZURE_TENANT_ID: required: true AZURE_SUBSCRIPTION_ID: required: true reviewApiKey: required: true
Beachten Sie, dass Sie die API-URLs als Eingaben einschließen, da sie keine geheimen Werte sind.
Aktualisieren Sie im
validate
-Auftrag die Schritte so, dass die neuen Bereitstellungsparameter enthalten sind:jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - if: inputs.environmentType != 'Production' uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ inputs.resourceGroupName }} template: ./deploy/main.bicep parameters: > environmentType=${{ inputs.environmentType }} reviewApiUrl=${{ inputs.reviewApiUrl }} reviewApiKey=${{ secrets.reviewApiKey }} deploymentMode: Validate - if: inputs.environmentType == 'Production' uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ inputs.resourceGroupName }} template: ./deploy/main.bicep parameters: > environmentType=${{ inputs.environmentType }} reviewApiUrl=${{ inputs.reviewApiUrl }} reviewApiKey=${{ secrets.reviewApiKey }} additionalArguments: --what-if
Aktualisieren Sie den
deploy
-Auftrag so, dass er die neuen Bereitstellungsparameter enthält:deploy: needs: validate environment: ${{ inputs.environmentType }} runs-on: ubuntu-latest outputs: appServiceAppHostName: ${{ steps.deploy.outputs.appServiceAppHostName }} steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 id: deploy name: Deploy Bicep file with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ inputs.resourceGroupName }} template: ./deploy/main.bicep parameters: > environmentType=${{ inputs.environmentType }} reviewApiUrl=${{ inputs.reviewApiUrl }} reviewApiKey=${{ secrets.reviewApiKey }}
Speichern Sie die geänderte Datei.
Aktualisieren der Datei „workflow.yml“, um die neuen Einstellungen zur Verfügung zu stellen.
Öffnen Sie in Visual Studio Code die Datei workflow.yml.
Fügen Sie die
reviewApiUrl
-Eingaben undreviewApiKey
-Geheimnisse für jede Umgebung hinzu:name: deploy-toy-website-environments concurrency: toy-company on: push: branches: - main workflow_dispatch: permissions: id-token: write contents: read jobs: # Lint the Bicep file. lint: uses: ./.github/workflows/lint.yml # Deploy to the test environment. deploy-test: uses: ./.github/workflows/deploy.yml needs: lint with: environmentType: Test resourceGroupName: ToyWebsiteTest reviewApiUrl: https://sandbox.contoso.com/reviews secrets: AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_TEST }} AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} reviewApiKey: ${{ secrets.REVIEW_API_KEY_TEST }} # Deploy to the production environment. deploy-production: uses: ./.github/workflows/deploy.yml needs: deploy-test with: environmentType: Production resourceGroupName: ToyWebsiteProduction reviewApiUrl: https://api.contoso.com/reviews secrets: AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_PRODUCTION }} AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} reviewApiKey: ${{ secrets.REVIEW_API_KEY_PRODUCTION }}
Speichern Sie die geänderte Datei.
Update der Bicep-Datei
Öffnen Sie die Datei main.bicep.
Fügen Sie unter den Parametern, die sich bereits in der Datei befinden, die folgenden Parameter für die neue Überprüfungs-API hinzu:
@description('The URL to the product review API.') param reviewApiUrl string @secure() @description('The API key to use when accessing the product review API.') param reviewApiKey string
Aktualisieren Sie die Ressourcendefinition
appServiceApp
, um die URL und den Schlüssel der Überprüfungs-API für die Anwendung zur Verfügung zu stellen, damit sie vom Code Ihrer Website verwendet werden können:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsights.properties.InstrumentationKey } { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: applicationInsights.properties.ConnectionString } { name: 'ReviewApiUrl' value: reviewApiUrl } { name: 'ReviewApiKey' value: reviewApiKey } ] } } }
Speichern Sie die geänderte Datei.
Committen und pushen Sie die Änderungen mithilfe der folgenden Befehle in Ihr Git-Repository:
git add . git commit -m "Add new review API settings to Bicep file and workflow" git push
Überprüfen der Bereitstellungsergebnisse
Navigieren Sie in Ihrem Browser zu Ihren Workflowausführungen.
Wählen Sie die letzte Ausführung aus.
Wählen Sie die letzte Ausführung Ihres Workflows aus.
Warten Sie, bis der Workflow vor dem Auftrag deploy-production / deploy angehalten wurde. Es kann einige Minuten dauern, bis der Workflow diesen Punkt erreicht hat.
Genehmigen Sie die Bereitstellung in der Produktionsumgebung, indem Sie Review deployments, dann Production sowie Approve and deploy auswählen.
Warten Sie, bis die Ausführung des Workflows beendet wurde.
Wählen Sie Code und dann die Production-Umgebung aus.
Beachten Sie, dass nun mehrere Bereitstellungen im Verlauf der Umgebung zu sehen sind.
Navigieren Sie in Ihrem Browser zum Azure-Portal.
Wechseln Sie zur Ressourcengruppe ToyWebsiteProduction.
Öffnen Sie in der Liste der Ressourcen die Azure App Service-App.
Wählen Sie Konfiguration aus.
Wählen Sie Werte anzeigen aus.
Beachten Sie, dass die Werte für die Einstellungen ReviewApiKey und ReviewApiUrl auf die Werte festgelegt sind, die Sie für die Produktionsumgebung konfiguriert haben.
Vergleichen Sie die aktuellen Werte mit den Konfigurationseinstellungen für die App Service-App in der Ressourcengruppe ToyWebsiteTest. Beachten Sie, dass die Werte sich unterscheiden.
Bereinigen der Ressourcen
Nachdem Sie die Übung abgeschlossen haben, können Sie die Ressourcen entfernen, damit Ihnen dafür keine Gebühren berechnet werden.
Führen Sie im Visual Studio Code-Terminal die folgenden Befehle aus:
az group delete --resource-group ToyWebsiteTest --yes --no-wait
az group delete --resource-group ToyWebsiteProduction --yes --no-wait
Die Ressourcengruppe wird im Hintergrund gelöscht.
Remove-AzResourceGroup -Name ToyWebsiteTest -Force
Remove-AzResourceGroup -Name ToyWebsiteProduction -Force