Bicep: IaC moderno do Azure
Aprenda a sintaxe concisa do Bicep como uma abstração fortemente tipada sobre o JSON do ARM, converta um modelo ARM existente para Bicep e implante-o com a CLI do Azure.
Bicep: IaC moderno do Azure é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que é Bicep e por que usá-lo?
O Bicep é uma linguagem específica de domínio (DSL) desenvolvida pela Microsoft como uma alternativa concisa e fortemente tipada aos modelos JSON do ARM. O Bicep é compilado para o JSON padrão do ARM, portanto usa o mesmo mecanismo de implantação do ARM e é compatível com todos os tipos de recursos do Azure desde o primeiro dia. O Bicep elimina grande parte do código repetitivo exigido pelo JSON puro e oferece melhor segurança de tipos e suporte ao IntelliSense.
Comparação da sintaxe do Bicep com o JSON do ARM
A mesma conta de armazenamento que exige cerca de 25 linhas de JSON em um modelo do ARM precisa de apenas cerca de 8 linhas no Bicep. O Bicep elimina '$schema', contentVersion, o contêiner da matriz resources e a sintaxe detalhada das expressões. Os nomes e tipos das propriedades permanecem idênticos, pois o Bicep é uma camada de abstração direta sobre o JSON do ARM — não há nenhuma diferença em tempo de execução.
// Bicep: deploy a storage account
param storageAccountName string
param location string = resourceGroup().location
param sku string = 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: sku
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
minimumTlsVersion: 'TLS1_2'
}
}Parâmetros e decoradores no Bicep
Os parâmetros do Bicep usam uma sintaxe concisa param name type = defaultValue. Você pode aplicar decoradores (prefixados com @) diretamente acima de um parâmetro para adicionar restrições, como @minLength(), @maxLength(), @allowed() e @description(). O decorador @secure() marca um parâmetro como confidencial, sendo equivalente a secureString no JSON do ARM.
@description('Globally unique name for the storage account')
@minLength(3)
@maxLength(24)
param storageAccountName string
@allowed(['Standard_LRS', 'Standard_GRS', 'Premium_LRS'])
param sku string = 'Standard_LRS'
@secure()
param adminPassword stringVariáveis e expressões no Bicep
As variables do Bicep são declaradas com a palavra-chave var e podem conter qualquer expressão, inclusive interpolação de cadeias de caracteres usando a sintaxe '${value}'. A interpolação de cadeias de caracteres é uma das melhorias de legibilidade mais importantes em relação ao JSON do ARM — não são mais necessárias chamadas à função concat(). O Bicep também é compatível com expressões condicionais usando o operador ternário condition ? trueValue : falseValue.
param environment string = 'dev'
param baseName string = 'myapp'
var uniqueSuffix = uniqueString(resourceGroup().id)
var storageAccountName = '${baseName}${environment}${uniqueSuffix}'
var isProd = environment == 'prod'
var skuName = isProd ? 'Standard_GRS' : 'Standard_LRS'Declarações de recursos e nomes simbólicos
No Bicep, cada recurso recebe um nome simbólico — um identificador usado para referenciá-lo dentro do modelo. O nome simbólico não é igual ao nome do recurso no Azure. Use nomes simbólicos para acessar propriedades de recursos e estabelecer dependências implícitas, referenciando um recurso dentro de outro e eliminando a necessidade de uma matriz dependsOn explícita.
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
name: 'myVNet'
location: location
properties: {
addressSpace: { addressPrefixes: ['10.0.0.0/16'] }
}
}
// Implicit dependency via symbolic name reference
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' = {
parent: vnet // Bicep knows to create vnet first
name: 'mySubnet'
properties: {
addressPrefix: '10.0.1.0/24'
}
}Saídas no Bicep
As saídas do Bicep são declaradas com a palavra-chave output, seguida pelo nome, tipo e valor da saída. Pode referenciar as propriedades de um recurso implantado usando o nome simbólico e a notação de ponto, que é muito mais legível do que a função reference() do ARM. As saídas são essenciais para transmitir valores entre chamadas de módulos do Bicep.
output storageAccountName string = storageAccount.name
output blobEndpoint string = storageAccount.properties.primaryEndpoints.blob
output storageAccountId string = storageAccount.idMódulos do Bicep
Os módulos do Bicep são equivalentes aos modelos vinculados no JSON do ARM, permitindo dividir a infraestrutura em componentes reutilizáveis. Um módulo é simplesmente outro arquivo .bicep. Pode referenciá-lo usando a palavra-chave module, passar parâmetros e consumir suas saídas. Os módulos também podem ser publicados e consumidos a partir de um Azure Container Registry para reutilização por toda a equipe.
// main.bicep — consuming a storage module
module storage './modules/storage.bicep' = {
name: 'storageDeploy'
params: {
storageAccountName: 'myuniquestorage'
location: location
sku: 'Standard_LRS'
}
}
// Reference module output in parent template
output blobUri string = storage.outputs.blobEndpointConvertendo modelos ARM para Bicep
Se já tiver modelos JSON do ARM existentes, a CLI do Bicep poderá descompilá-los para Bicep usando bicep decompile. O resultado pode exigir alguma limpeza manual, mas oferece um excelente ponto de partida. A Microsoft também disponibiliza um playground online em aka.ms/bicepdemo, onde pode colar JSON do ARM e ver o Bicep equivalente em tempo real.
# Install the Bicep CLI (or use it via Azure CLI)
az bicep install
az bicep upgrade
# Decompile existing ARM JSON to Bicep
az bicep decompile --file azuredeploy.json
# Produces azuredeploy.bicep in the same directory
# Compile Bicep to ARM JSON (for inspection)
az bicep build --file main.bicepImplantando Bicep com a CLI do Azure
A CLI do Azure oferece suporte direto a arquivos Bicep — não é necessário compilá-los manualmente para JSON do ARM antes da implantação. Passe o caminho do arquivo .bicep para az deployment group create usando a opção --template-file, e a CLI fará a compilação de forma transparente. Os mesmos subcomandos validate e what-if funcionam com arquivos Bicep exatamente como com JSON do ARM.
# Deploy a Bicep file directly
az deployment group create \
--resource-group MyRG \
--template-file main.bicep \
--parameters storageAccountName=myprodstore environment=prod
# What-if preview with Bicep
az deployment group what-if \
--resource-group MyRG \
--template-file main.bicep \
--parameters storageAccountName=myprodstore environment=prodLoops e condições no Bicep
O Bicep oferece suporte a loops de recursos usando a sintaxe for ... in para criar várias instâncias de um recurso a partir de um parâmetro de matriz, eliminando a duplicação por copiar e colar. A palavra-chave if habilita a implantação condicional de recursos — incluindo um recurso somente quando determinada condição for verdadeira. Esses dois recursos são compilados, respectivamente, nas construções copy e condition do ARM.
// Loop: create multiple storage accounts
param storageNames array = ['alpha', 'beta', 'gamma']
resource stores 'Microsoft.Storage/storageAccounts@2023-01-01' = [for name in storageNames: {
name: '${name}${uniqueString(resourceGroup().id)}'
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
}]
// Condition: only deploy in prod
param deployKeyVault bool = false
resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = if (deployKeyVault) {
name: 'myKeyVault'
location: location
properties: { sku: { family: 'A', name: 'standard' }, tenantId: subscription().tenantId, accessPolicies: [] }
}Ferramentas e análise de código do Bicep
A extensão do Bicep para o Visual Studio Code oferece IntelliSense avançado, verificação de tipos e destaque de erros na linha enquanto digita. A CLI do Bicep inclui um analisador que verifica violações de boas práticas, como parâmetros não utilizados, descrições ausentes e versões incorretas da API. Execute az bicep lint --file main.bicep no seu pipeline de CI para detectar problemas antes da implantação.
# Run the Bicep linter
az bicep lint --file main.bicep
# Format a Bicep file
az bicep format --file main.bicep
# Generate resource type documentation
az bicep generate-params --file main.bicep --output-format jsonVerificação rápida
Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.
Recapitulação da lição
Nesta lição, aprendeu que: o Bicep é uma abstração concisa e fortemente tipada sobre o JSON do ARM, que é compilada para modelos ARM padrão; módulos e loops permitem criar código de infraestrutura reutilizável e DRY; e a CLI do Azure implanta arquivos Bicep diretamente, oferecendo suporte ao mesmo fluxo de trabalho de validação, what-if e implantação. A seguir, exploraremos o Terraform no Azure.
Perguntas Frequentes
A aula “Bicep: IaC moderno do Azure” é grátis?
Sim — o texto completo de “Bicep: IaC moderno do Azure” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Bicep: IaC moderno do Azure”?
Aprenda a sintaxe concisa do Bicep como uma abstração fortemente tipada sobre o JSON do ARM, converta um modelo ARM existente para Bicep e implante-o com a CLI do Azure. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Bicep: IaC moderno do Azure”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Como funciona o Azure Resource Manager
- Escrevendo Modelos ARM
- Bicep: IaC moderno do Azure
- Terraform no Azure