Início Rápido: criar arquivos Bicep com o Visual Studio Code

Este guia de início rápido guia você pelas etapas para criar um arquivo Bicep com Visual Studio Code. Você cria uma conta de armazenamento e uma rede virtual. Você também aprende 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 parecida também tem suporte no Visual Studio. Confira Guia de início rápido: criar arquivos Bicep com o Visual Studio.

Pré-requisitos

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Para configurar seu ambiente para o desenvolvimento do Bicep, confira Instalar ferramentas do Bicep. Depois de concluir essas etapas, você tem o Visual Studio Code e a extensão Bicep. Você também terá a CLI do Azure mais recente ou o módulo do Azure PowerShell mais recente.

Adicionar snippet de código do recurso

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

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

Em main.bicep, digite vnet e selecione res-vnet na lista e pressione [TAB] ou [ENTER].

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

Dica

Se você não vir essas opções do IntelliSense no VS Code, certifique-se de ter instalado a extensão do Bicep conforme 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. Ela geralmente é iniciada rapidamente, mas as opções do IntelliSense não estão disponíveis até que ela seja iniciada. Uma notificação no canto inferior direito indica que o serviço está sendo iniciado. Quando essa notificação desaparecer, o serviço estará em execução.

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'
        }
      }
    ]
  }
}

Nesse snippet, você encontra todos os valores necessários para definir uma rede virtual. Você pode notar dois sublinhados ondulados. Um amarelo indica um aviso relacionado a uma versão de API desatualizada, enquanto um sublinhado vermelho sinaliza um erro causado por uma definição de parâmetro ausente.

Remova @2019-11-01 e substitua por @. Selecione a versão mais antiga da API.

Captura de tela da atualização da versão da API.

Você corrigirá o erro de definição de parâmetro ausente na próxima seção.

Você também 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'

Adicionar parâmetro

O snippet de código que você adicionou na última seção perde uma definição de parâmetro.

No topo do arquivo, adicione:

param location

Ao adicionar um espaço após o local, observe 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.

Dê ao parâmetro um valor padrão:

param location string = resourceGroup().location

Para obter mais informações sobre a função usada no valor padrão, consulte resourceGroup().

Adicione outro parâmetro para o nome da conta de armazenamento com um valor padrão:

param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

Para obter mais informações, consulte Interpolação e uniqueString().

Esse parâmetro funciona bem, mas as contas de armazenamento têm limites de comprimento do nome. O nome deve conter no mínimo três 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:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

Também é possível adicionar uma descrição para o parâmetro. Inclua informações que ajudam as pessoas que estejam implantando o arquivo Bicep a entenderem qual valor fornecer.

@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 storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

O parâmetro está pronto para uso.

Adicionar recurso

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

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 storageacc 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. Escolha a última versão. Para a captura de tela a seguir, é 2023-05-01.

Captura de tela da versão selecionada 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@2023-05-01' = {
  name:
  location:
  sku: {
    name:
  }
  kind:
}

Você está quase lá. Agora basta fornecer valores para essas propriedades.

Novamente, o IntelliSense ajuda você. Defina name como storageAccountName, que é o parâmetro que contém um nome para a conta de armazenamento. Para location, defina-o como location, que é um parâmetro criado anteriormente. Ao adicionar sku.name e kind, o IntelliSense apresenta as opções válidas.

Para adicionar propriedades opcionais junto com as propriedades necessárias, coloque o cursor no local desejado e pressione Ctrl+Espaço. O IntelliSense sugere propriedades não usadas, conforme mostrado na seguinte captura de tela:

Captura de tela da adição de propriedades adicionais.

Quando terminar, você terá:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location

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

resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

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

Visualizar recursos

Você pode exibir uma representação dos recursos do seu arquivo.

No canto superior direito, selecione o botão do visualizador para abrir o Bicep Visualizer.

Captura de tela do visualizador de bíceps.

O visualizador mostra os recursos definidos no arquivo Bicep com as informações de dependência do recurso. Os dois recursos definidos neste início rápido não têm relação de dependência, por isso você não vê um conector entre eles.

Captura de tela do diagrama do Bicep Visualizer.

Implante o arquivo Bicep

  1. Clique com o botão direito do mouse no arquivo Bicep dentro do VSCode e selecione Implantar arquivo Bicep.

    Captura de tela da implantação do arquivo Bicep.

  2. Na caixa de texto Insira o nome para implantação, digite deployStorageAndVNete pressione [ENTER].

  3. Na caixa de listagem Selecionar Grupo de Recursos na parte superior, selecione Criar novo Grupo de Recursos.

  4. Insira exampleRG como o nome do grupo de recursos e pressione [ENTER].

  5. Selecione um local para o grupo de recursos, selecione EUA Central ou um local de sua escolha e pressione [ENTER].

  6. Em Selecionar um arquivo de parâmetro, selecione Nenhum.

    Captura de tela da seleção de arquivo de parâmetro.

São necessários alguns instantes para a criação dos recursos. Para obter mais informações, veja Implantar arquivos Bicep com o Visual Studio Code.

Também é 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 storageAccountName=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