Bewerken

Delen via


Veelgestelde vragen over Azure Developer CLI

In dit artikel vindt u antwoorden op veelgestelde vragen over Azure Developer CLI.

Algemeen

Hoe kan ik Azure Developer CLI verwijderen?

Er zijn verschillende opties voor het verwijderen 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 () en Azure CLI (azazd) zijn beide opdrachtregelprogramma's, maar ze helpen u verschillende taken uit te voeren.

azd is gericht op de werkstroom voor ontwikkelaars op hoog niveau. Naast het inrichten/beheren van Azure-resources kunt azd u cloudonderdelen, lokale ontwikkelingsconfiguratie en pijplijnautomatisering samenvoegen tot een volledige oplossing.

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

Wat is een omgevingsnaam?

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

├── .Azure                          [This directory displays after you run add 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 

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 is het omgevingsconfiguratiebestand (.env) opgeslagen?

Het .env-bestandspad is <your-project-directory-name>\.azure\<your-environment-name>\.env.

Hoe wordt het .env-bestand gebruikt?

In Azure Developer CLI verwijzen de azd opdrachten naar het .env-bestand voor omgevingsconfiguratie. Opdrachten zoals azd deploy het .env-bestand bijwerken met bijvoorbeeld de db-verbindingsreeks 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 deze opdracht uit azd init -t <template repo> om het sjabloonproject naar uw lokale computer te klonen.
  2. Als u de bestaande env wilt ophalen die is gemaakt met codespaces, voert u de opdracht uit azd env refresh. Zorg ervoor dat u dezelfde omgevingsnaam, hetzelfde abonnement en dezelfde locatie opgeeft als voorheen.

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 functie 'secretOrRandomPassword'?

De secretOrRandomPassword functie 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 in plaats daarvan een willekeurig gegenereerd wachtwoord dat moet worden gebruikt.

In het volgende voorbeeld ziet u een veelvoorkomend gebruiksvoorbeeld van het secretOrRandomPassword in een main.parameters.json bestand. De ${AZURE_KEY_VAULT_NAME} variabelen worden sqlAdminPassword doorgegeven als parameters voor de namen van de Sleutelkluis 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 sleutelkluis wilt maken en het gegenereerde geheim erin wilt opslaan, gebruikt u de Bicep-code hieronder. U kunt de volledige voorbeeldcode voor deze modules bekijken in de GitHub-opslagplaats van Azure Developer CLI.

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-installatie kan de volgende werkstroom worden gebruikt voor het beheren van uw geheimen:

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

Kan ik een gratis Azure-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 die wordt gehost met Azure-app Service activeert een waarschuwing 'Misleidende site vooruit', hoe kan ik deze oplossen?

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

Met onze door Azure Dev geschreven sjablonen kunt u de naam van de resource configureren. Hiervoor kunt u een vermelding toevoegen aan de main.parameters.json infra map. 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 uitvoeren azd down om alle vorige implementaties te verwijderen. Nadat u de resources hebt verwijderd, voert azd provision u deze 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 het maken van de resource.

Opdracht: azd provision

Hoe weet de opdracht welke resources moeten worden ingericht?

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

Waar vind ik welke resources zijn ingericht in Azure?

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

Hoe kan ik meer informatie over Azure-fouten vinden?

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 uw resourcegroep gaan en vervolgens zoeken.rg-<your-environment-name> Als een van de implementaties mislukt, selecteert u de foutkoppeling voor meer informatie.

Zie Veelvoorkomende Azure-implementatiefouten oplossen - Azure Resource Manager voor andere resources.

Is er een logboekbestand voor azd provision?

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

Opdracht: azd deploy

Kan ik deze opdracht opnieuw uitvoeren?

Ja.

Hoe vindt azd de Azure-resource waarop mijn code moet worden geïmplementeerd?

Tijdens de implementatie azd detecteert u 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 met azd-service-name een waarde die overeenkomt met de naam van uw service.azure.yaml

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

Opdracht: azd up

Kan ik 'azd up' opnieuw uitvoeren?

Ja. We gebruiken de incrementele implementatiemodus.

Hoe kan ik het logboekbestand voor azd up zoeken?

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

Opdracht: azd pipeline

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 azd pipeline config opdracht 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-GH-account>/<your-repo>/secrets/actions.

Wat is OpenID Connect (OIDC) en wordt ondersteund?

Met OpenID Connect kunnen uw werkstromen kortstondige tokens rechtstreeks vanuit Azure uitwisselen.

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

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

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

Ga naar https://github.com/<your-GH-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 van GitHub Actions is <your-project-directory-name>\.github\workflows\azure-dev.yml.

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 uitvoer?

Ga naar https://github.com/<your-GH-account>/<your-repo>/actionsen 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 in de container worden uitgevoerd azd auth login om de toepassing te laten werken met de AzureDeveloperCliCredential. U kunt uw toepassing ook configureren voor het gebruik van een service-principal in plaats van de AzureDeveloperCliCredential.