Delen via


Veelgestelde vragen over cli-hulpprogramma's en omgevingen voor ontwikkelaars Azure

Dit artikel bevat antwoorden op veelgestelde vragen over de hulpprogramma's, opdrachten en omgevingen van Azure Developer CLI (azd).

Algemene vragen

De volgende sectie is gericht op algemene azd vragen over hulpprogramma's en omgevingen.

Hoe verwijder ik Azure Developer CLI?

Er zijn verschillende opties voor het verwijderen van azd, afhankelijk van hoe u deze oorspronkelijk hebt geïnstalleerd. Ga naar de -installatiepagina voor meer informatie.

Wat is het verschil tussen de Azure Developer CLI en de Azure CLI?

Azure Developer CLI (azd) en Azure CLI (az) zijn beide opdrachtregelprogramma's, maar ze helpen u verschillende taken uit te voeren.

azd richt zich op de werkstroom voor ontwikkelaars op hoog niveau. Naast het inrichten/beheren van Azure resources, helpt azd bij het samenvoegen van cloudonderdelen, configuratie van lokale ontwikkeling en pijplijnautomatisering tot een volledige oplossing.

Azure CLI is een besturingsvlakhulpprogramma voor het maken en beheren van Azure infrastructuur zoals virtuele machines, virtuele netwerken en opslag. De Azure CLI is ontworpen rond gedetailleerde opdrachten voor specifieke beheertaken.

Ga naar Azure Developer CLI versus Azure CLI voor meer informatie.

Wat is een omgevingsnaam?

Azure Developer CLI een omgevingsnaam gebruikt om de omgevingsvariabele AZURE_ENV_NAME in te stellen die wordt gebruikt door Azure Developer CLI-sjablonen. AZURE_ENV_NAME wordt ook gebruikt om de naam van de Azure resourcegroep voor tevoegen. Omdat elke omgeving een eigen set configuraties heeft, slaat Azure Developer CLI alle configuratiebestanden op in omgevingsmappen.

├── .Azure                          [This directory displays after you run `azd init` or `azd up`]
│   ├── <your environment1>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └── <your environment2>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └──config.json

Zie azd init en azd up voor meer informatie over werkstromen.

Kan ik meer dan één omgeving instellen?

Ja. U kunt verschillende omgevingen instellen (bijvoorbeeld dev, test, productie). U kunt azd env gebruiken om deze omgevingen te beheren.

Waar wordt het omgevingsconfiguratiebestand (.env) opgeslagen?

Het pad naar het .env-bestand is <your-project-directory-name>\.azure\<your-environment-name>\.env. Zie Omgevingsvariabelen beheren voor meer informatie.

Hoe wordt het .env-bestand gebruikt?

In Azure Developer CLI verwijzen de opdrachten azd naar het .env-bestand voor omgevingsconfiguratie. Opdrachten zoals azd deploy werken ook het .env-bestand bij met bijvoorbeeld de db-connection string en het Azure Key Vault-eindpunt.

Ik heb azd up uitgevoerd in Codespaces. Kan ik mijn werk voortzetten in een lokale ontwikkelomgeving?

Ja. U kunt het ontwikkelwerk lokaal voortzetten.

  1. Voer azd init -t <template repo> uit om het sjabloonproject te klonen op uw lokale computer.
  2. Voer azd env refreshuit om de bestaande env die met Codespaces is gemaakt, op te halen. Zorg ervoor dat u dezelfde omgevingsnaam, hetzelfde abonnement en dezelfde locatie opgeeft als voorheen.

Hoe kan ik me verifiëren in Codespaces als er een probleem is met de aanmelding van het apparaat?

Als u problemen ondervindt met verificatie van apparaatcode in Codespaces (bijvoorbeeld terugkerende 2FA-aanvragen of -fouten), kunt u de volgende tijdelijke oplossing proberen met VS Code Desktop:

  1. Open uw Codespace in VS Code Desktop met een van de volgende methoden:
    • Gebruik het opdrachtenpalet (Ctrl+Shift+P op Windows of Cmd+Shift+P op MacOs) en selecteer Codespaces: Openen in VS Code Desktop.
    • Klik in de linkerbenedenhoek van de Codespace in de browser en selecteer Openen in VS Code Desktop).
  2. Voer in de VS Code Desktop-terminal azd-verificatieaanmelding uit en voltooi de verificatie op basis van de browser.
  3. Nadat u bent geverifieerd, sluit u VS Code Desktop en keert u terug naar uw Codespace in de browser. De verificatiestatus moet behouden blijven.

Hoe wordt het bestand azure.yaml gebruikt?

In het bestand azure.yaml worden de apps en typen Azure resources beschreven die zijn opgenomen in de sjabloon.

Wat is het gedrag van de secretOrRandomPassword functie?

De functie secretOrRandomPassword haalt een geheim op uit Azure Key Vault als parameters voor de naam en het geheim van de sleutelkluis worden opgegeven. Als deze parameters niet worden opgegeven of als er geen geheim kan worden opgehaald, retourneert de functie een willekeurig gegenereerd wachtwoord dat moet worden gebruikt.

In het volgende voorbeeld ziet u een veelvoorkomend gebruiksvoorbeeld van de secretOrRandomPassword in een main.parameters.json-bestand. De variabelen ${AZURE_KEY_VAULT_NAME} en sqlAdminPassword worden doorgegeven als parameters voor de namen van de Key Vault en het geheim. Als de waarde niet kan worden opgehaald, wordt in plaats daarvan een willekeurig wachtwoord gegenereerd.

"sqlAdminPassword": {
    "value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
}

De uitvoer van secretOrRandomPassword moet ook worden opgeslagen in Key Vault met Bicep voor toekomstige uitvoeringen. Het ophalen en hergebruiken van dezelfde geheimen voor implementaties kan fouten of onbedoeld gedrag voorkomen dat optreedt bij het herhaaldelijk genereren van nieuwe waarden. Als u een Key Vault wilt maken en het gegenereerde geheim erin wilt opslaan, gebruikt u de onderstaande Bicep code. U kunt de volledige voorbeeldcode voor deze modules bekijken in de Azure Developer CLI GitHub opslagplaats.

module keyVault './core/security/keyvault.bicep' = {
name: 'keyvault'
scope: resourceGroup
params: {
    name: '${take(prefix, 17)}-vault'
    location: location
    tags: tags
    principalId: principalId
}
}

module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
name: 'keyvault-secret-sqlAdminPassword'
scope: resourceGroup
params: {
    keyVaultName: keyVault.outputs.name
    name: 'sqlAdminPassword'
    secretValue: sqlAdminPassword
}
}]

Met deze Bicep setup kunt u de volgende werkstroom gebruiken voor het beheren van uw geheimen:

  1. Als het opgegeven geheim bestaat, wordt het opgehaald uit Key Vault met behulp van de functie secretOrRandomPassword.
  2. Als het geheim niet bestaat, wordt er een Key Vault gemaakt en wordt het willekeurig gegenereerde geheim erin opgeslagen.
  3. Bij toekomstige implementaties haalt de methode secretOrRandomPassword het opgeslagen geheim op nu het in Key Vault bestaat. De Key Vault wordt niet opnieuw gemaakt als deze al bestaat, maar dezelfde geheime waarde wordt opnieuw opgeslagen voor de volgende uitvoering.

Kan ik Azure gratis abonnement gebruiken?

Ja, maar elke Azure locatie kan slechts één implementatie hebben. Als u de geselecteerde Azure locatie al hebt gebruikt, ziet u de implementatiefout:

InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.

U kunt een andere Azure locatie selecteren om het probleem op te lossen.

Mijn app, gehost door Azure App Service, activeert een waarschuwing 'Misleidende website'. Hoe kan ik dit oplossen?

Dit kan gebeuren vanwege onze methode voor het benoemen van resources.

Met onze ontwerpsjablonen voor Azure Dev kunt u de naam van de resource configureren. Hiervoor kunt u een vermelding toevoegen aan de main.parameters.json in de map infra. Voorbeeld:

"webServiceName": {
    "value": "my-unique-name"
}

Met deze vermelding maakt u een nieuwe resource met de naam 'my-unique-name' in plaats van een gerandomiseerde waarde, zoals 'app-web-aj84u2adj' wanneer u de toepassing de volgende keer inricht. U kunt de oude resourcegroep handmatig verwijderen met behulp van de Azure-portal of azd down uitvoeren om alle vorige implementaties te verwijderen. Nadat u de resources hebt verwijderd, voert u azd provision uit om ze opnieuw te maken met de nieuwe naam.

Deze naam moet wereldwijd uniek zijn, anders krijgt u een ARM-fout tijdens azd provision wanneer geprobeerd wordt de resource te creëren.

Kan ik met meerdere Azure tenants werken?

Ja. Als u wilt verifiëren met een specifieke tenant, gebruikt u de --tenant-id parameter met de azd auth login opdracht.

azd auth login --tenant-id <tenant-id>

Alternatief, als u azd toegang wilt hebben tot al uw tenants, kunt u ook eerst de Multi-Factor Authentication (MFA) uitdagingen in de browser verwerken:

  1. Open de Azure Portal in uw browser.
  2. Schakel één voor één over naar elk van uw tenants. Deze actie activeert eventuele benodigde MFA-uitdagingen en vernieuwt uw tokens.
  3. Voer azd auth login deze uit in uw terminal. azd gebruikt de bestaande sessie- en toegangstokens van de browser, die nu geldig zijn voor alle tenants die u hebt bezocht.

Kan ik meerdere keren rennen azd up ?

Ja. We gebruiken de incrementele implementatiemodus. Zie azd up voor meer informatie.

Provisioning

De volgende sectie richt zich op het azd inrichtingsproces.

Kan ik meerdere keren rennen azd provision ?

Ja. We gebruiken de incrementele implementatiemodus. Zie azd provision voor meer informatie.

Hoe weet de azd provision opdracht welke resources moeten worden ingericht?

De opdracht maakt gebruik van Bicep-sjablonen, die worden gevonden onder <your-project-directory-name>/infra om Azure resources in te richten.

Waar vind ik welke resources zijn ingericht in Azure?

Ga naar https://portal.azure.com en zoek vervolgens naar uw resourcegroep, die rg-<your-environment-name>is.

Hoe vind ik meer informatie over Azure fouten?

We gebruiken Bicep sjablonen, die worden gevonden onder <your-project-directory-name>/infra, om Azure resources in te richten. Als er problemen zijn, nemen we het foutbericht op in de CLI-uitvoer.

U kunt ook naar https://portal.azure.com gaan en vervolgens naar uw resourcegroep zoeken. Dit is rg-<your-environment-name>. Als een van de implementaties mislukt, klikt u op de foutkoppeling voor meer informatie.

Zie Troubleshoot common Azure deployment errors - Azure Resource Manager voor andere resources.

Is er een logboekbestand voor azd provision?

Binnenkort beschikbaar. Deze functie is gepland voor een toekomstige release.

Implementatie

De volgende sectie is gericht op het azd implementatieproces.

Kan ik meerdere keren rennen azd deploy ?

Ja. Zie azd deploy voor meer informatie.

Hoe vindt azd de Azure-resource om mijn code te implementeren?

Tijdens de implementatie detecteert azd eerst alle resourcegroepen waaruit uw toepassing bestaat door te zoeken naar groepen die zijn getagd met azd-env-name en met een waarde die overeenkomt met de naam van uw omgeving. Vervolgens worden alle resources in elk van deze resourcegroepen opgesomd, op zoek naar een resource die is getagd met azd-service-name met een waarde die overeenkomt met de naam van uw service uit azure.yaml.

Hoewel u wordt aangeraden tags te gebruiken voor resources, kunt u ook de resourceName eigenschap in azure.yaml gebruiken om een expliciete resourcenaam op te geven. In dat geval wordt de bovenstaande logica niet uitgevoerd.

Hoe implementeer ik specifieke services in mijn project terwijl ik anderen overslaat?

Wanneer u uw project implementeert, kunt u ervoor kiezen om specifieke services te implementeren door de servicenaam op te geven in de opdracht (bijvoorbeeld azd deploy api) of door te navigeren naar een submap die alleen de service(s) bevat die u wilt implementeren. Als u dit doet, worden alle andere services vermeld als - Skipped.

Als u geen services wilt missen, zorg er dan voor dat u de opdracht vanuit de hoofdmap uitvoert, of voeg de parameter "--all" toe aan uw opdracht.

Pijplijnconfiguratie

In de volgende sectie wordt de configuratie van CI/CD-pijplijnen beschreven.

Wat is een Azure service-principal?

Een Azure service-principal is een identiteit die wordt gemaakt voor gebruik met apps, gehoste services en geautomatiseerde hulpprogramma's voor toegang tot Azure resources. Deze toegang wordt beperkt door de rollen die zijn toegewezen aan de service-principal, waarmee u kunt bepalen welke resources kunnen worden geopend en op welk niveau. Zie Connect GitHub en Azure voor meer informatie over verificatie van Azure naar GitHub | Microsoft Docs.

Moet ik een Azure service-principal maken voordat ik azd pipeline config uitvoer?

Nee. De opdracht azd pipeline config zorgt ervoor dat de Azure service-principal wordt gemaakt en de benodigde stappen worden uitgevoerd om de geheimen op te slaan in uw GitHub opslagplaats.

Wat zijn alle geheimen die zijn opgeslagen in GitHub?

Met de opdracht worden vier geheimen opgeslagen in GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION en AZURE_SUBSCRIPTION_ID. U kunt de waarde van elk geheim overschrijven door naar https://github.com/<your-github-account>/<your-repo>/secrets/actionste gaan.

Wat is OpenID Connect (OIDC) en wordt ondersteund?

Met OpenID Connect kunnen uw werkstromen tokens met korte levensduur rechtstreeks vanuit Azure uitwisselen.

Hoewel OIDC wordt ondersteund als de standaardinstelling voor GitHub Actions en Azure Pipeline (ingesteld als federated), wordt deze niet ondersteund voor Azure DevOps of Terraform.

  • Voor Azure DevOps leidt het expliciet aanroepen van --auth-type als federated tot een fout.
  • Voor Terraform:
    • Als --auth-type niet is gedefinieerd, valt deze terug op clientcredentials en resulteert dit in een waarschuwing.
    • Als --auth-type expliciet is ingesteld op federated, resulteert dit in een fout.

Hoe stel ik de Azure service-principal die is opgeslagen in GitHub Actions opnieuw in?

Ga naar https://github.com/<your-github-account>/<your-repo>settings/secrets/actionsen werk AZURE_CREDENTIALS vervolgens bij door het hele JSON-object voor de nieuwe service-principal te kopiëren en te plakken. Voorbeeld:

{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}

Waar wordt het GitHub Actions bestand opgeslagen?

Het bestandspad GitHub Actions is <your-project-directory-name>\.github\workflows\azure-dev.yml. Zie Quickstart: Een service-principal maken en een GitHub Action uitvoeren voor meer informatie.

Kan ik in het bestand azure-dev.yml alleen de code in de buildstap implementeren?

Ja. Vervang run: azd up --no-prompt door run: azd deploy --no-prompt.

Waar vind ik het logboek voor de GitHub Actions taak die ik heb geactiveerd toen ik azd pipeline config heb uitgevoerd?

Ga naar https://github.com/<your-github-account>/<your-repo>/actions, en raadpleeg het logboekbestand in de werkstroomuitvoering.

Een containertoepassing lokaal bouwen

Waarom kan ik de container-app die ik bouw niet lokaal uitvoeren?

Wanneer u containertoepassingen lokaal bouwt, moet u azd auth login uitvoeren in de container zodat de toepassing kan werken met de AzureDeveloperCliCredential. U kunt uw toepassing ook configureren voor het gebruik van een service-principal in plaats van de AzureDeveloperCliCredential.