Editar

Compartilhar via


Perguntas frequentes sobre a CLI do Desenvolvedor do Azure

Este artigo responde a perguntas frequentes sobre a CLI do Desenvolvedor do Azure.

Geral

Como desinstalar a CLI do Desenvolvedor do Azure?

Há opções diferentes para desinstalar azd dependendo de como você o instalou originalmente. Visite a página de instalação do para obter detalhes.

Qual é a diferença entre a CLI do Desenvolvedor do Azure e a CLI do Azure?

CLI do Desenvolvedor do Azure (azd) e CLI do Azure (az) são ferramentas de linha de comando, mas ajudam você a realizar tarefas diferentes.

azd se concentra no fluxo de trabalho de desenvolvedor de alto nível. Além de provisionar/gerenciar recursos do Azure, azd ajuda a unir componentes de nuvem, configuração de desenvolvimento local e automação de pipeline em uma solução completa.

A CLI do Azure é uma ferramenta de plano de controle para criar e administrar a infraestrutura do Azure, como máquinas virtuais, redes virtuais e armazenamento. A CLI do Azure foi projetada em torno de comandos granulares para tarefas administrativas específicas.

O que é um nome de ambiente?

A CLI do Desenvolvedor do Azure usa um nome de ambiente para definir a variável de ambiente AZURE_ENV_NAME usada pelos modelos da CLI do Desenvolvedor do Azure. AZURE_ENV_NAME também é usado para prefixar o nome do grupo de recursos do Azure. Como cada ambiente tem seu próprio conjunto de configurações, a CLI do Desenvolvedor do Azure armazena todos os arquivos de configuração em diretórios de ambiente.

├── .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 

Posso configurar mais de um ambiente?

Sim. Você pode configurar vários ambientes (por exemplo, desenvolvimento, teste, produção). Você pode usar azd env para gerenciar esses ambientes.

Onde o arquivo de configuração de ambiente (.env) está armazenado?

O caminho do arquivo .env é <your-project-directory-name>\.azure\<your-environment-name>\.env.

Como o arquivo .env é usado?

Na CLI do Desenvolvedor do Azure, os comandos azd referem-se ao arquivo .env para configuração de ambiente. Comandos como azd deploy também atualizam o arquivo .env com, por exemplo, a cadeia de conexão db e o ponto de extremidade do Azure Key Vault.

Executei 'azd up' em Codespaces. Posso continuar meu trabalho em um ambiente de desenvolvimento local?

Sim. Você pode continuar o trabalho de desenvolvimento localmente.

  1. Execute azd init -t <template repo> para clonar o projeto de modelo no computador local.
  2. Para efetuar pull do env existente criado usando codespaces, execute azd env refresh. Certifique-se de fornecer o mesmo nome de ambiente, assinatura e localização de antes.

Como o arquivo azure.yaml é usado?

O arquivo azure.yaml descreve os aplicativos e os tipos de recursos do Azure incluídos no modelo.

Qual é o comportamento da função 'secretOrRandomPassword'?

A função secretOrRandomPassword recuperará um segredo do Azure Key Vault se forem fornecidos parâmetros para o nome e o segredo do cofre de chaves. Se esses parâmetros não forem fornecidos ou um segredo não puder ser recuperado, a função retornará uma senha gerada aleatoriamente para usar.

O exemplo a seguir demonstra um caso de uso comum do secretOrRandomPassword em um arquivo de main.parameters.json. As variáveis ${AZURE_KEY_VAULT_NAME} e sqlAdminPassword são passadas como parâmetros para os nomes do Key Vault e do segredo. Se o valor não puder ser recuperado, uma senha aleatória será gerada.

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

A saída de secretOrRandomPassword também deve ser salva no Key Vault usando o Bicep para execuções futuras. A recuperação e a reutilização dos mesmos segredos entre implantações podem evitar erros ou comportamentos não intencionais que podem surgir ao gerar repetidamente novos valores. Para criar um Key Vault e armazenar o segredo gerado nele, use o código Bicep abaixo. Você pode exibir o código de exemplo completo desses módulos no do repositório GitHub da CLI do Desenvolvedor do Azure.

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
  }
}]

Essa configuração do Bicep permite o seguinte fluxo de trabalho para gerenciar seus segredos:

  1. Se o segredo especificado existir, ele será recuperado do Key Vault usando a função secretOrRandomPassword.
  2. Se o segredo não existir, um Key Vault será criado e o segredo gerado aleatoriamente será armazenado dentro dele.
  3. Em implantações futuras, o método secretOrRandomPassword recupera o segredo armazenado agora que ele existe no Key Vault. O Key Vault não será recriado se ele já existir, mas o mesmo valor secreto será armazenado novamente para a próxima execução.

Posso usar a Assinatura Gratuita do Azure?

Sim, mas cada local do Azure só pode ter uma implantação. Se você já tiver usado o local selecionado do Azure, verá o erro de implantação:

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.

Você pode selecionar um local diferente do Azure para corrigir o problema.

Meu aplicativo hospedado com o Serviço de Aplicativo do Azure está disparando um aviso "Site enganoso à frente". Como posso corrigi-lo?

Isso pode acontecer devido ao nosso método de nomenclatura de recursos.

Nossos modelos de criação do 'Azure Dev' permitem configurar o nome do recurso. Para fazer isso, você pode adicionar uma entrada ao main.parameters.json na pasta infra. Por exemplo:

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

Essa entrada cria um novo recurso chamado "my-unique-name" em vez de um valor aleatório, como "app-web-aj84u2adj" na próxima vez que você provisionar seu aplicativo. Você pode remover manualmente o grupo de recursos antigo usando o portal do Azure ou executar azd down para remover todas as implantações anteriores. Depois de remover os recursos, execute azd provision para criá-los novamente com o novo nome.

Esse nome precisará ser globalmente exclusivo, caso contrário, você receberá um erro do ARM durante azd provision quando tentar criar o recurso.

Comando: provisionamento azd

Como o comando sabe quais recursos provisionar?

O comando usa modelos Bicep, que são encontrados em <your-project-directory-name>/infra para provisionar recursos do Azure.

Onde posso encontrar quais recursos são provisionados no Azure?

Vá para https://portal.azure.com e procure seu grupo de recursos, que é rg-<your-environment-name>.

Como encontrar mais informações sobre erros do Azure?

Usamos modelos Bicep, que são encontrados em <your-project-directory-name>/infra, para provisionar recursos do Azure. Se houver problemas, incluímos a mensagem de erro na saída da CLI.

Você também pode ir para https://portal.azure.com e procurar seu grupo de recursos, que é rg-<your-environment-name>. Se alguma das implantações falhar, selecione o link de erro para obter mais informações.

Para outros recursos, consulte Solucionar problemas comuns de erros de implantação do Azure –do Azure Resource Manager.

Há um arquivo de log para 'azd provision'?

Em breve. Esse recurso está planejado para uma versão futura.

Comando: azd deploy

Posso executar este comando novamente?

Sim.

Como o azd localiza o recurso do Azure para o qual implantar meu código?

Durante a implantação, azd primeiro descobre todos os grupos de recursos que compõem seu aplicativo procurando grupos marcados com azd-env-name e com um valor que corresponda ao nome do seu ambiente. Em seguida, ele enumera todos os recursos em cada um desses grupos de recursos, procurando um recurso marcado com azd-service-name com um valor que corresponde ao nome do serviço de azure.yaml.

Embora seja recomendável usar marcas em recursos, você também pode usar a propriedade resourceName em azure.yaml para fornecer um nome de recurso explícito. Nesse caso, a lógica acima não é executada.

Como faço para implantar serviços específicos em meu projeto ao ignorar outras pessoas?

Ao implantar seu projeto, você pode optar por implantar serviços específicos especificando o nome do serviço no comando (ou seja, azd deploy api) ou navegando até uma subpasta que contém apenas os serviços que você deseja implantar. Ao fazer isso, todos os outros serviços serão listados como - Skipped.

Se você não quiser ignorar nenhum serviço, execute o comando da pasta raiz ou adicione o sinalizador --all ao seu comando.

Comando: azd up

Posso executar novamente 'azd up'?

Sim. Usamos o modo de implantação incremental .

Como encontrar o arquivo de log para 'azd up'?

Em breve. Esse recurso está planejado para uma versão futura.

Comando: azd pipeline

O que é uma entidade de serviço do Azure?

Uma entidade de serviço do Azure é uma identidade criada para uso com aplicativos, serviços hospedados e ferramentas automatizadas para acessar recursos do Azure. Esse acesso é restrito pelas funções atribuídas à entidade de serviço, o que fornece controle sobre quais recursos podem ser acessados e em qual nível. Para obter mais informações sobre como autenticar do Azure para o GitHub, consulte Conectar o GitHub e o Azure | Microsoft Docs.

Preciso criar uma entidade de serviço do Azure antes de executar a configuração de pipeline do azd?

Não. O comando azd pipeline config cuida da criação da entidade de serviço do Azure e executar as etapas necessárias para armazenar os segredos em seu repositório do GitHub.

Quais são todos os segredos armazenados no GitHub?

O comando armazena quatro segredos no GitHub: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION e AZURE_SUBSCRIPTION_ID. Você pode substituir o valor de cada segredo acessando https://github.com/<your-GH-account>/<your-repo>/secrets/actions.

O que é OpenID Connect (OIDC) e tem suporte?

Com do OpenID Connect, seus fluxos de trabalho podem trocar tokens de curta duração diretamente do Azure.

Embora o OIDC tenha suporte como o padrão para o GitHub Actions e o Azure Pipeline (definido como federados), não há suporte para o Azure DevOps ou o Terraform.

  • Para o Azure DevOps, chamar explicitamente --auth-type como federated resultará em um erro.
  • Para o Terraform:
    • Se --auth-type não estiver definido, ele retornará ao clientcredentials e resultará em um aviso.
    • Se --auth-type estiver explicitamente definido como federated, isso resultará em um erro.

Como redefinir a entidade de serviço do Azure armazenada no GitHub Actions?

Vá para https://github.com/<your-GH-account>/<your-repo>settings/secrets/actionse atualize AZURE_CREDENTIALS copiando e colando todo o objeto JSON para a nova entidade de serviço. Por exemplo:

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

Onde o arquivo do GitHub Actions está armazenado?

O caminho do arquivo do GitHub Actions é <your-project-directory-name>\.github\workflows\azure-dev.yml.

No arquivo azure-dev.yml, posso implantar apenas o código na etapa de build?

Sim. Substitua run: azd up --no-prompt por run: azd deploy --no-prompt.

Onde posso encontrar o log do trabalho do GitHub Actions que disparei quando executei a configuração de pipeline do azd?

Vá para https://github.com/<your-GH-account>/<your-repo>/actionse consulte o arquivo de log na execução do fluxo de trabalho.

Compilando um aplicativo de contêiner localmente

Por que não consigo executar localmente o aplicativo de contêiner que estou criando?

Ao criar aplicativos de contêiner localmente, você precisa executar azd auth login no contêiner para que o aplicativo funcione com o AzureDeveloperCliCredential. Como alternativa, você pode configurar seu aplicativo para usar uma entidade de serviço em vez do AzureDeveloperCliCredential.