Importieren von Konfigurationsdateien aus Ihrem GitHub-Repository in den App Configuration-Speicher
Wenn Sie Konfiguration als Code eingeführt haben und Ihre Konfigurationen in GitHub verwalten, können Sie GitHub Actions verwenden, um Konfigurationsdateien automatisch aus Ihrem GitHub-Repository in Ihren App Configuration-Speicher zu importieren. So können Sie wie gewohnt Änderungen an Ihren Konfigurationsdateien vornehmen und gleichzeitig von den Vorteilen des App Configuration-Speichers profitieren:
- Zentrale Konfiguration außerhalb Ihres Codes
- Aktualisierung der Konfiguration ohne erneute Bereitstellung Ihrer gesamten App
- Integration in Dienste wie Azure App Service und Azure Functions
Ein GitHub Actions-Workflow definiert einen automatisierten Prozess in einem GitHub-Repository. Wenn Sie eine Konfigurationsdatei aus Ihrem GitHub-Repository in den Azure App Configuration-Speicher importieren möchten, verwenden Sie die GitHub-Aktion Azure CLI. Diese bietet umfassende Funktionen zum Importieren von Dateien in Ihren App Configuration-Speicher.
Authentifizierung
Sie können sich mit einer der folgenden Methoden authentifizieren, um Konfigurationen in Ihren Azure App Configuration-Speicher zu importieren:
Verwenden Sie Microsoft Entra ID
Die empfohlene Authentifizierungsmethode ist die Verwendung von Microsoft Entra ID. Mit dieser Methode können Sie eine sichere Verbindung mit Ihren Azure-Ressourcen herstellen. Sie können den Authentifizierungsprozess mithilfe der GitHub-Aktion Azure-Anmeldung automatisieren.
„Azure-Anmeldung“ ermöglicht es Ihnen, sich unter Verwendung von Dienstprinzipalen mit Geheimnissen oder unter Verwendung von OpenID Connect mit Anmeldeinformationen für eine Verbundidentität zu authentifizieren. Im vorliegenden Beispiel wird OpenID Connect für die Anmeldung bei Ihrem App Configuration-Speicher verwendet.
Verwenden der Azure-Anmeldung mit OpenID Connect
Führen Sie die folgenden Aktionen aus, um die Azure-Anmeldung mit OpenID Connect verwenden zu können:
- Richten Sie eine Microsoft Entra-Anwendung mit einem Dienstprinzipal ein.
- Weisen Sie Ihrer Microsoft Entra-Anwendung die Rolle App Configuration-Datenbesitzer zu, damit Ihre GitHub-Aktion Lese- und Schreibvorgänge in Ihrem App Configuration-Speicher ausführen kann.
- Geben Sie für die Anmeldeaktion die Client-ID, die Mandanten-ID und die Abonnement-ID Ihrer Microsoft Entra-Anwendung an. Diese Werte können entweder direkt im Workflow bereitgestellt oder zur Verbesserung der Sicherheit als GitHub-Geheimnisse gespeichert werden. Im folgenden Beispiel werden diese Werte als Geheimnisse festgelegt. Weitere Informationen zur Verwendung von Geheimnissen in GitHub finden Sie unter Verwenden von Geheimnissen in GitHub Actions.
Um mit der Verwendung dieser GitHub-Aktion zu beginnen, navigieren Sie zu Ihrem Repository, und wählen Sie die Registerkarte Aktionen aus. Wählen Sie Neuer Workflow und dann Eigenen Workflow einrichten aus. Suchen Sie zum Schluss im Marketplace nach „Azure-Anmeldung“. Nachdem Sie die entsprechende Aktion gefunden haben, klicken Sie darauf, und kopieren Sie den bereitgestellten Codeschnipsel in Ihre Workflowdatei.
Beispiel mit Microsoft Entra ID
# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions:
id-token: write
contents: read
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Verwenden einer Verbindungszeichenfolge
Alternativ können Sie zur Authentifizierung die Verbindungszeichenfolge direkt an den Azure CLI-Befehl übergeben. Diese Methode umfasst das Abrufen der Verbindungszeichenfolge aus dem Azure-Portal und ihre Verwendung in Ihren Befehlen oder Skripts.
Die Verbindungszeichenfolge finden Sie im Azure-Portal unter Zugriffseinstellungen für Ihren App Configuration-Speicher.
Legen Sie als Nächstes diese Verbindungszeichenfolge als Geheimnisvariable in Ihrem GitHub-Repository fest. Weitere Informationen zur Verwendung von Geheimnissen in GitHub finden Sie unter Verwenden von Geheimnissen in GitHub Actions.
Beispiel mit einer Verbindungszeichenfolge
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
# pass the secret variable as an environment variable to access it in your CLI action.
env:
CONNECTION_STRING: ${{ secrets.<ConnectionString> }}
Importieren von Konfigurationsdateien
Sie verwenden die GitHub-Aktion Azure CLI, um eine Konfigurationsdatei in Ihren App Configuration-Speicher zu importieren. Um mit der Verwendung dieser GitHub-Aktion zu beginnen, navigieren Sie zu Ihrem Repository, und wählen Sie die Registerkarte Aktionen aus. Wählen Sie Neuer Workflow und dann Eigenen Workflow einrichten aus. Suchen Sie zum Schluss im Marketplace nach „Azure CLI-Aktion“. Nachdem Sie die entsprechende Aktion gefunden haben, klicken Sie darauf, und kopieren Sie den bereitgestellten Codeschnipsel in Ihre Workflowdatei.
Im folgenden Beispiel wird die Azure CLI-Aktion verwendet, um Konfigurationsdateien in einen Azure App Configuration-Speicher zu importieren, wenn eine Änderung an appsettings.json
gepusht wird. Wenn ein Entwickler eine Änderung an appsettings.json
pusht, aktualisiert das Skript, das an die Azure CLI-Aktion übergeben wurde, den App Configuration-Speicher mit den neuen Werten.
Im Abschnitt on dieses Workflows ist angegeben, dass die Aktion bei einem Pushvorgang mit appsettings.json
an den Branch main ausgelöst wird. Im Abschnitt jobs werden die Aufträge aufgeführt, die nach dem Auslösen der Aktion ausgeführt werden. Die Aktion überprüft die relevanten Dateien und aktualisiert den App Configuration-Store.
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions:
id-token: write
contents: read
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
- name: Azure login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/cli@v2
with:
azcliversion: latest
inlineScript: |
az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes
Weitere Informationen zu CLI-Importbefehlen von Azure App Configuration finden Sie in der CLI-Dokumentation zu Azure App Configuration.
Verwenden einer dynamischen Bezeichnung beim Importieren
Die Verwendung einer dynamischen Bezeichnung für den jeweiligen Import ist eine gute Möglichkeit, um eine klare und präzise Versionskontrolle Ihrer Konfigurationen zu gewährleisten. Dadurch ist jeder Importvorgang in Ihren App Configuration-Speicher eindeutig identifizierbar, was die Zuordnung von Codeänderungen zu Konfigurationsaktualisierungen erleichtert.
Beispiel für die Verwendung einer dynamischen Bezeichnung beim Importieren
Im folgenden Beispiel verfügen alle importierten Schlüssel-Wert-Paare über eine eindeutige, auf dem Commit-Hash basierende Bezeichnung.
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# Creates a label based on the branch name and the first 8 characters
# of the commit hash
- id: determine_label
run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}"
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/cli@v2
with:
azcliversion: latest
inlineScript: |
az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes
Nächste Schritte
Informationen zur Verwendung von CLI-Importbefehlen finden Sie in unserem umfassenden Leitfaden mit Azure CLI-Importbefehlen.
Weitere Informationen zu verschiedenen Dateiinhaltsprofilen finden Sie unter Azure App Configuration-Unterstützung für Konfigurationsdateien.