Guia de início rápido: criar arquivos Bicep com o Visual Studio

Este guia de início rápido percorre as etapas para criar um arquivo Bicep com o Visual Studio. Você criará uma conta de armazenamento e uma rede virtual. Você também aprenderá como a extensão Bicep simplifica o desenvolvimento ao fornecer segurança de tipo, validação de sintaxe e preenchimento automático.

Uma experiência de criação semelhante também tem suporte no Visual Studio Code. Confira Início Rápido: criar arquivos Bicep com o Visual Studio Code.

Pré-requisitos

Adicionar snippet de código do recurso

Inicie o Visual Studio e crie um arquivo chamado main.bicep.

O Visual Studio com a extensão Bicep simplifica o desenvolvimento ao fornecer snippets de código predefinidos. Neste guia de início rápido, você adicionará um snippet de código que cria uma rede virtual.

Em main.bicep, digite vnet. Selecione res-vnet na lista, depois pressione Tab ou Enter.

Captura de tela da adição do snippet da rede virtual.

Dica

Se essas opções do IntelliSense não aparecerem no Visual Studio, verifique se você instalou a extensão Bicep, como especificado em Pré-requisitos. Se você tiver instalado a extensão, aguarde algum tempo até que o serviço de linguagem Bicep seja iniciado após abrir o arquivo Bicep. Normalmente ele é iniciado rapidamente, mas você não terá opções de intelliSense até que ele esteja totalmente carregado.

O arquivo Bicep agora contém o código a seguir:

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: 'name'
  location: 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'
        }
      }
    ]
  }
}

Esse snippet contém todos os valores necessários para definir uma rede virtual. Contudo, você pode modificar esse código para atender às suas necessidades. Por exemplo, name não é um nome muito bom para a rede virtual. Altere a propriedade name para exampleVnet.

name: 'exampleVnet'

Observe que location tem um sublinhado vermelho sinuoso. Isso indica um problema. Focalize location. A mensagem de erro é: O nome "location" não existe no contexto atual. Criaremos um parâmetro de localização na próxima seção.

Adicionar parâmetros

Agora, adicionaremos dois parâmetros para o nome da conta de armazenamento e a localização. Na parte superior do arquivo, adicione:

param storageName

Ao adicionar um espaço após storageName, tenha em mente que o IntelliSense oferece os tipos de dados que estão disponíveis para o parâmetro. Selecionar cadeia de caracteres.

Captura de tela da adição do tipo de cadeia de caracteres ao parâmetro.

Você tem o seguinte parâmetro:

param storageName string

Esse parâmetro funciona bem, mas as contas de armazenamento têm limites de comprimento do nome. O nome deve conter no mínimo 3 e no máximo 24 caracteres. Para especificar esses requisitos, adicione decoradores ao parâmetro.

Adicione uma linha acima do parâmetro e digite @ . Você verá os decoradores disponíveis. Observe que há decoradores para minLength e maxLength.

Captura de tela da adição de decoradores ao parâmetro.

Adicione os dois decoradores e especifique os limites de caracteres, conforme mostrado abaixo:

@minLength(3)
@maxLength(24)
param storageName string

Também é possível adicionar uma descrição para o parâmetro. Inclua informações que ajudem as pessoas que estiverem implantando o arquivo Bicep a entender o valor a ser fornecido.

@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageName string

O parâmetro de nome da conta de armazenamento está pronto para uso.

Adicione outro parâmetro de localização:

param location string = resourceGroup().location

Adicionar recurso

Em vez de usar um snippet de código para definir a conta de armazenamento, usaremos o IntelliSense para definir os valores. O IntelliSense torna essa etapa muito mais fácil do que ter de digitar os valores manualmente.

Para definir um recurso, use a palavra-chave resource. Abaixo da sua rede virtual, digite resource exampleStorage:

resource exampleStorage

exampleStorage é um nome simbólico para o recurso sendo implantado. Use esse nome para referenciar o recurso em outras partes do arquivo Bicep.

Ao adicionar um espaço após o nome simbólico, uma lista de tipos de recursos será exibida. Continue digitando storage até que seja possível selecioná-lo nas opções disponíveis.

Captura de tela da seleção de contas de armazenamento para o tipo de recurso.

Depois de selecionar Microsoft.Storage/storageAccounts, você verá as versões de API disponíveis. Selecione 2021-09-01 ou a versão mais recente da API. É recomendável usar a versão mais recente da API.

Captura de tela da seleção da versão da API para o tipo de recurso.

Adicione = e um espaço após a aspa simples para o tipo de recurso. Você verá as opções para adicionar propriedades ao recurso. Selecione required-properties.

Captura de tela da adição das propriedades necessárias.

Com essa opção, são adicionadas todas as propriedades do tipo de recurso que são necessárias para a implantação. Depois de selecionar essa opção, a conta de armazenamento terá as seguintes propriedades:

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-09-01' = {
	name: 1
	location: 2
	sku: {
		name: 3
	}
	kind: 4
}

Há quatro espaços reservados no código. Use Tab para percorrê-los e inserir os valores. Mais uma vez, o IntelliSense ajuda você. Defina name como storageName, que é o parâmetro que contém o nome da conta de armazenamento. Para location, defina como location. Ao adicionar o nome e o tipo do SKU, o IntelliSense apresentará as opções válidas.

Ao concluir, você terá:

@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageName string
param location string = resourceGroup().location

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: storageName
  location: 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'
        }
      }
    ]
  }
}

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-09-01' = {
  name: storageName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Para obter mais informações sobre a sintaxe Bicep, confira Estrutura Bicep.

Implante o arquivo Bicep

A implantação do arquivo Bicep ainda não pode ser feita por meio do Visual Studio. É possível implantar o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell:

az group create --name exampleRG --location eastus

az deployment group create --resource-group exampleRG --template-file main.bicep --parameters storageName=uniquename

Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.

Limpar os recursos

Quando os recursos do Azure não forem mais necessários, use o módulo da CLI do Azure ou do Azure PowerShell para excluir o grupo de recursos de início rápido.

az group delete --name exampleRG

Próximas etapas