O que é Azure Bicep?
Azure Bicep é uma linguagem específica de domínio (DSL) que implanta recursos do Azure usando sintaxe declarativa.
Até agora, quando o IaC era usado no Azure, era comum usar o modelo do Azure Resource Manager (modelo ARM) .
No entanto, este modelo ARM é muito detalhado.
Os modelos ARM são escritos em JSON, portanto, tendem a ser longos e difíceis de manejar.
Bicep é uma abstração do template ARM redundante e pode ser convertido como template Bicep ⇔ ARM.
Instale o Azure Bicep
Agora, vamos instalá-lo agora!
O Bicep utiliza a CLI do Azure. Digite o seguinte comando no prompt de comando do ambiente onde o CLI está instalado.
az bicep install
Sim é isso.
Se a versão for antiga, não pode ser instalada. Se falhar, atualize a versão CLI.
Além disso, o VSC tem uma extensão para bíceps, para que você possa escrever um programa facilmente usando-o.
A extensão é chamada de [Bicep]
Tente implantar com o Azure Bicep
Vamos escrever Bicep agora. Vamos criar vnet, por exemplo.
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
name: 'name'
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: 'Subnet-1'
properties: {
addressPrefix: '10.0.0.0/24'
}
}
{
name: 'Subnet-2'
properties: {
addressPrefix: '10.0.1.0/24'
}
}
]
}
}
A sintese me lembrou bastante o Terraform e o CloudFormation.
Vamos implantá-lo agora.
Especifique o resource group "vnet" e implemente "test.bicep" que salvou o código vnet bicep criado anteriormente com o comando az.
az deployment group create --resource-group vnet --template-file test.bicep
Sim é isso.
Se você escrever isso em um modelo ARM seria assim:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"virtualNetworks_sample_vnet_name": {
"defaultValue": "sample-vnet",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2020-11-01",
"name": "[parameters('virtualNetworks_sample_vnet_name')]",
"location": "japaneast",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/16"
]
},
"subnets": [
{
"name": "Subnet-1",
"properties": {
"addressPrefix": "10.0.0.0/24",
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"name": "Subnet-2",
"properties": {
"addressPrefix": "10.0.1.0/24",
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
],
"virtualNetworkPeerings": [],
"enableDdosProtection": false
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('virtualNetworks_sample_vnet_name'), '/Subnet-1')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_sample_vnet_name'))]"
],
"properties": {
"addressPrefix": "10.0.0.0/24",
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
},
{
"type": "Microsoft.Network/virtualNetworks/subnets",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('virtualNetworks_sample_vnet_name'), '/Subnet-2')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_sample_vnet_name'))]"
],
"properties": {
"addressPrefix": "10.0.1.0/24",
"delegations": [],
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
]
}
O Azure tem evoluído para práticas de IaC mais modernas, espero que continuem nesse caminho =D
Vlw Flw
Top comments (0)