Partilhar via


Implantar arquivos Bicep com a CLI do Azure

Este artigo explica como usar a CLI do Azure com arquivos Bicep para implantar seus recursos no Azure. Se você não estiver familiarizado com a implantação e o gerenciamento de suas soluções do Azure, consulte O que é o Bicep?.

Pré-requisitos

Você precisa de um arquivo Bicep para implantar e o arquivo deve ser local. Você também precisa da CLI do Azure e estar conectado ao Azure:

  • Instale os comandos da CLI do Azure em seu computador local. Para implantar arquivos Bicep, você precisa da CLI do Azure versão 2.20.0 ou posterior.
  • Use az login para se conectar ao Azure. Se você tiver várias assinaturas do Azure, talvez também precise executar az account seto .

Exemplos para a CLI do Azure são escritos para o bash shell. Para executar este exemplo no Windows PowerShell ou no Prompt de Comando (cmd), talvez seja necessário alterar elementos do script.

Se você não tiver a CLI do Azure instalada, poderá usar o Azure Cloud Shell. Para obter mais informações, consulte Implantar arquivos Bicep com o Azure Cloud Shell.

Permissões obrigatórias

Para implementar um ficheiro Bicep ou modelo do ARM, precisa de acesso de escrita nos recursos que está a implementar e acesso a todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implantar uma máquina virtual, você precisa de Microsoft.Compute/virtualMachines/write permissões Microsoft.Resources/deployments/* . A operação hipotética tem os mesmos requisitos de permissão.

Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.

Âmbito da implementação

Você pode direcionar sua implantação para um grupo de recursos, assinatura, grupo de gerenciamento ou locatário. Dependendo do escopo da implantação, você usa comandos diferentes, e o usuário que implanta o arquivo Bicep deve ter as permissões necessárias para criar recursos para cada escopo.

Implantar arquivo Bicep local

Você pode implantar um arquivo Bicep a partir de sua máquina local ou externa. Esta seção descreve como implantar um arquivo Bicep local.

Se você estiver implantando em um grupo de recursos que não existe, crie o grupo de recursos. O nome do grupo de recursos só pode incluir caracteres alfanuméricos, pontos, sublinhados, hífenes e parênteses. Pode ter até 90 caracteres e não pode terminar em um período.

az group create --name ExampleGroup --location "Central US"

Para implantar um arquivo Bicep local, use a --template-file opção no comando deployment. O exemplo a seguir também mostra como definir um valor de parâmetro:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file <path-to-bicep> \
  --parameters storageAccountType=Standard_GRS

A implementação pode demorar alguns minutos a concluir. Quando terminar, você verá uma mensagem que inclui o seguinte resultado:

"provisioningState": "Succeeded",

Implantar arquivo Bicep remoto

Atualmente, a CLI do Azure não oferece suporte à implantação de arquivos Bicep remotos. Você pode usar a CLI do Bicep para criar o arquivo Bicep em um modelo JSON e, em seguida, carregar o arquivo JSON em um local remoto. Para obter mais informações, consulte Implantar modelo remoto.

Parâmetros

Para passar valores de parâmetro, você pode usar parâmetros embutidos ou um arquivo de parâmetros. O arquivo de parâmetros pode ser um arquivo de parâmetros Bicep ou um arquivo de parâmetros JSON.

Parâmetros em linha

Para passar parâmetros embutidos, forneça os valores em parameters. Por exemplo, para passar uma cadeia de caracteres e matriz para um arquivo Bicep em um shell Bash, use:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters exampleString='inline string' exampleArray='["value1", "value2"]'

Se você estiver usando a CLI do Azure com o cmd ou PowerShell, passe a matriz no formato: exampleArray="['value1','value2']".

Você também pode obter o conteúdo do arquivo para fornecer esse conteúdo como um parâmetro embutido. Prefacie o nome do arquivo com @:

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json

Obter um valor de parâmetro de um arquivo é útil quando você precisa fornecer valores de configuração. Por exemplo, você pode fornecer valores cloud-init para uma máquina virtual Linux.

O formato arrayContent.json é:

[
  "value1",
  "value2"
]

Para passar um objeto, use JSON (ao definir tags, por exemplo). Seu arquivo Bicep pode incluir um parâmetro como este:

"resourceTags": {
  "type": "object",
  "defaultValue": {
    "Cost Center": "IT Department"
  }
}

Como mostrado no script Bash a seguir, você também pode passar uma cadeia de caracteres JSON para definir o parâmetro. Use aspas duplas ao redor do JSON que você deseja passar para o objeto:

tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"

Se você estiver usando a CLI do Azure com cmd ou PowerShell, passe o objeto no seguinte formato:

$tags="{'Owner':'Contoso','Cost Center':'2345-324'}"
az deployment group create --name addstorage  --resource-group myResourceGroup \
--template-file $bicepFile \
--parameters resourceName=abcdef4556 resourceTags=$tags

Você pode usar uma variável para conter os valores de parâmetro. Defina a variável para todos os valores de parâmetro no script Bash e adicione-a ao comando deployment:

params="prefix=start suffix=end"

az deployment group create \
  --resource-group testgroup \
  --template-file <path-to-bicep> \
  --parameters $params

No entanto, se você estiver usando a CLI do Azure com cmd ou PowerShell, defina a variável como uma cadeia de caracteres JSON. Fuja das aspas: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.

A avaliação dos parâmetros segue uma ordem sequencial, o que significa que, se um valor é atribuído várias vezes, então apenas o último valor atribuído é usado. Para atribuir parâmetros corretamente, é recomendável que você forneça seu arquivo de parâmetros inicialmente e, em seguida, use a sintaxe KEY=VALUE para substituir seletivamente parâmetros específicos. Se você estiver fornecendo um .bicepparam arquivo de parâmetros, só poderá usar esse argumento uma vez.

Arquivos de parâmetros do bíceps

Em vez de passar parâmetros como valores embutidos em seu script, talvez seja mais fácil usar um arquivo de parâmetros Bicep ou um arquivo de parâmetros JSON que contenha os valores de parâmetro. O arquivo de parâmetros deve ser um arquivo local, já que a CLI do Azure não oferece suporte a arquivos de parâmetros externos. Para obter mais informações sobre arquivos de parâmetros, consulte Criar arquivos de parâmetros para implantação do Bicep.

Você pode usar um arquivo de parâmetros Bicep para implantar um arquivo Bicep com a CLI do Azure versão 2.53.0 ou posterior e a CLI do Bicep versão 0.22.X ou posterior. Com a using instrução dentro do arquivo de parâmetros Bicep, não há necessidade de fornecer o --template-file switch ao especificar um arquivo de parâmetros Bicep para o --parameters switch. Incluir a --template-file opção solicitará um erro "Somente um modelo .bicep é permitido com um arquivo .bicepparam".

O exemplo a seguir mostra um arquivo de parâmetros chamado storage.bicepparam. O arquivo está no mesmo diretório onde o comando é executado:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

Arquivos de parâmetros JSON

O exemplo a seguir mostra um arquivo de parâmetros chamado storage.parameters.json. O arquivo está no mesmo diretório onde o comando é executado:

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.bicep \
  --parameters '@storage.parameters.json'

Você pode usar parâmetros embutidos e um arquivo de parâmetros de localização na mesma operação de implantação. Para obter mais informações, consulte Precedência de parâmetros.

Pré-visualizar alterações

Antes de implantar seu arquivo Bicep, você pode visualizar as alterações que o arquivo Bicep fará em seu ambiente. Use a operação hipotética para verificar se o arquivo Bicep faz as alterações esperadas. O What-if também valida o arquivo Bicep em busca de erros.

Implantar especificações de modelo

Atualmente, a CLI do Azure não fornece arquivos Bicep para ajudar a criar especificações de modelo. No entanto, você pode criar um arquivo Bicep com o recurso Microsoft.Resources/templateSpecs para implantar uma especificação de modelo. O exemplo Criar especificação de modelo mostra como criar uma especificação de modelo em um arquivo Bicep. Você também pode criar seu arquivo Bicep para JSON usando a CLI do Bicep e, em seguida, um modelo JSON para criar uma especificação de modelo.

Nome da implementação

Ao implantar um arquivo Bicep, você pode dar um nome à implantação. Esse nome pode ajudá-lo a recuperar a implantação do histórico de implantação. Se você não fornecer um nome para a implantação, seu nome se tornará o nome do arquivo Bicep. Por exemplo, se você implantar um arquivo Bicep chamado main.bicep e não especificar um nome de implantação, a implantação será nomeada main.

Sempre que você executa uma implantação, uma entrada é adicionada ao histórico de implantação do grupo de recursos com o nome da implantação. Se você executar outra implantação e lhe der o mesmo nome, a entrada anterior será substituída pela implantação atual. Se você quiser manter entradas exclusivas no histórico de implantação, dê a cada implantação um nome exclusivo.

Para criar um nome exclusivo, você pode atribuir um número aleatório:

deploymentName='ExampleDeployment'$RANDOM

Ou adicione um valor de data:

deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")

Se você executar implantações simultâneas no mesmo grupo de recursos com o mesmo nome de implantação, somente a última implantação será concluída. Todas as implantações com o mesmo nome que não foram concluídas são substituídas pela última implantação. Por exemplo, se você executar uma implantação nomeada newStorage que implanta uma conta de armazenamento nomeada storage1 e executar outra implantação nomeada newStorage que implanta uma conta de armazenamento nomeada storage2 ao mesmo tempo, implantará apenas uma conta de armazenamento. A conta de armazenamento resultante é denominada storage2.

No entanto, se você executar uma implantação nomeada newStorage que implanta uma conta de armazenamento nomeada storage1 e executar imediatamente outra implantação nomeada newStorage que implanta uma conta de armazenamento nomeada storage2 após a conclusão da primeira implantação, então você terá duas contas de armazenamento. Um é chamado storage1, e o outro é chamado storage2. Mas, você só tem uma entrada no histórico de implantação.

Ao especificar um nome exclusivo para cada implantação, você pode executá-los simultaneamente sem conflito. Se você executar uma implantação nomeada newStorage1 que implanta uma conta de armazenamento nomeada storage1 e executar outra implantação nomeada newStorage2 que implanta uma conta de armazenamento nomeada storage2 ao mesmo tempo, terá duas contas de armazenamento e duas entradas no histórico de implantação.

Para evitar conflitos com implantações simultâneas e garantir entradas exclusivas no histórico de implantação, dê a cada implantação um nome exclusivo.

Próximos passos

Para entender como definir parâmetros em seu arquivo, consulte Compreender a estrutura e a sintaxe dos arquivos Bicep.