Compartilhar via


Ferramentas de Interface de Linha de Comando (CLI) e Ambiente do Desenvolvedor do Azure - Perguntas Frequentes

Este artigo fornece respostas para perguntas frequentes sobre as ferramentas, comandos e ambientes da CLI do Desenvolvedor do Azure (azd).

Perguntas gerais

A seção a seguir se concentra em perguntas gerais azd sobre ferramentas e ambiente.

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 o Azure CLI?

Azure CLI do Desenvolvedor (azd) e Azure CLI (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 Azure, azd ajuda a costurar componentes de nuvem, configuração de desenvolvimento local e automação de pipeline em uma solução completa.

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

Visite CLI do Desenvolvedor do Azure vs CLI do Azure para obter mais informações.

O que é um nome de ambiente?

CLI do Desenvolvedor Azure usa um nome de ambiente para definir a variável de ambiente AZURE_ENV_NAME que é utilizada pelos modelos do CLI do Desenvolvedor Azure. AZURE_ENV_NAME também é usado para prefixar o nome do grupo de recursos 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 `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

Para obter mais informações sobre fluxos de trabalho, consulte azd init e azd up.

Posso configurar mais de um ambiente?

Sim. Você pode configurar vários ambientes (por exemplo, desenvolvimento, teste, produção). Você pode usar o 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. Para obter mais informações, consulte Gerenciar variáveis de ambiente.

Como o arquivo .env é usado?

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

Eu 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 fazer para autenticar em Codespaces se o logon do dispositivo tiver um problema?

Se você tiver problemas com a autenticação de código do dispositivo em Codespaces (por exemplo, solicitações ou erros recorrentes de 2FA), tente a seguinte solução alternativa usando o VS Code Desktop:

  1. Abra seu Codespace no VS Code Desktop usando um destes métodos:
    • Use a paleta de comandos (Ctrl+Shift+P em Windows ou Cmd+Shift+P em MacOs) e selecione Codespaces: Abrir no VS Code Desktop.
    • Clique no canto inferior esquerdo do Codespace no navegador e selecione Abrir no VS Code Desktop).
  2. No terminal da Área de Trabalho do VS Code, execute o logon de autenticação do azd e conclua a autenticação baseada em navegador.
  3. Depois de autenticado, feche o VS Code Desktop e retorne ao seu Codespace no navegador. O estado de autenticação deve persistir.

Como o arquivo azure.yaml é usado?

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

Qual é o comportamento da secretOrRandomPassword função?

A função secretOrRandomPassword recuperará um segredo de 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 para Key Vault usando 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 visualizar o código completo de exemplo desses módulos no repositório do 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 Bicep habilita o seguinte fluxo de trabalho para gerenciar seus segredos:

  1. Se o segredo especificado existir, ele será recuperado de 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 já existir, mas o mesmo valor secreto será armazenado novamente para a próxima execução.

Posso usar Azure Assinatura Gratuita?

Sim, mas cada Azure local só pode ter uma implantação. Se você já tiver usado o local Azure selecionado, 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 de Azure diferente para corrigir o problema.

Meu app hospedado no Azure App Service está disparando um aviso "Aviso: site potencialmente enganoso". Como posso corrigi-lo?

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

Nossos modelos de criação '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.

Posso trabalhar com vários locatários Azure?

Sim. Para autenticar com um locatário específico, use o --tenant-id parâmetro com o azd auth login comando.

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

Como alternativa, se você quiser azd ter acesso a todos os seus inquilinos, poderá lidar com os desafios de Autenticação Multifator (MFA) primeiro no navegador:

  1. Abra o Azure Portal no navegador.
  2. Alterne para cada um de seus locatários um por um. Essa ação dispara todos os desafios necessários de MFA e atualiza seus tokens.
  3. Execute azd auth login em seu terminal. azd usará os tokens de sessão e acesso existentes do navegador, que agora são válidos para todos os locatários que você visitou.

Posso executar azd up várias vezes?

Sim. Usamos o modo de implantação incremental Para obter mais informações, consulte azd up.

Provisionamento

A seção a seguir se concentra no azd processo de provisionamento.

Posso executar azd provision várias vezes?

Sim. Usamos o modo de implantação incremental . Para obter mais informações, consulte azd provision.

Como o azd provision comando sabe quais recursos provisionar?

O comando usa modelos Bicep, que são encontrados em <your-project-directory-name>/infra para provisionar recursos 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 de Azure?

Usamos modelos de Bicep, que são encontrados em <your-project-directory-name>/infra, para provisionar recursos 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 erros comuns de implantação do Azure - Gerenciador de Recursos do Azure.

Há um arquivo de log para azd provision?

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

Implantação

A seção a seguir se concentra no azd processo de implantação.

Posso executar azd deploy várias vezes?

Sim. Consulte azd deploy para obter mais informações.

Como o azd encontra o recurso 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 resourceName propriedade 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 enquanto ignoro outros?

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.

Configuração do pipeline

A seção a seguir concentra-se na configuração do pipeline de CI/CD.

O que é um principal 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 pelos perfis de funções atribuídos à entidade de serviço, o que proporciona controle sobre quais recursos podem ser acessados e em que nível. Para obter mais informações sobre como autenticar de Azure para GitHub, consulte Conectar GitHub e Azure | Microsoft Docs.

Preciso criar uma entidade de serviço do Azure antes de executar azd pipeline config?

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

Quais são todos os segredos armazenados em GitHub?

O comando armazena quatro segredos em 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-github-account>/<your-repo>/secrets/actions.

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

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

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

  • Para 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 resetar o principal de serviço do Azure armazenado no GitHub Actions?

Vá para https://github.com/<your-github-account>/<your-repo>settings/secrets/actions e 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 GitHub Actions está armazenado?

O caminho do arquivo GitHub Actions é <your-project-directory-name>\.github\workflows\azure-dev.yml. Para obter mais informações, consulte Início Rápido: Criar uma entidade de serviço e executar uma ação do GitHub.

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 da tarefa do GitHub Actions que disparei quando executei azd pipeline config?

Vá para https://github.com/<your-github-account>/<your-repo>/actions e 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, pode configurar sua aplicação para usar uma entidade de serviço em vez do AzureDeveloperCliCredential.