Criação de Recursos no Azure com PowerShell

Para iniciar este post, vamos compartilhar você  uma demanda que tivemos nos últimos dias.

Precisávamos criar um ambiente de teste no Azure com diversos recursos e este seria recriado várias vezes conforme o andamento dos testes. Este precisava dos seguintes recursos:

  • Azure SQL Database;
  • Uma VM com o Ubuntu;
  • Outra VM com Windows e SQL Server.

A primeira alternativa, foi criar recursos pelo Portal, mas seria muito demorado recriar um por um a cada teste que fosse realizado.

Logo, pensamos em um script em Powershell, que recriasse os recursos já com todas as configurações que definimos na primeira vez que criamos. E por que powershell e não AZ Cli? Simplesmente, porque  a equipe está acostumada a trabalhar com Powershell e isso torna o nosso trabalho mais fácil. 😉

Para começar, vamos instalar o modulo Az no PowerShell, para termos acesso aos comandos específicos do Azure, como criação dos recursos, configurações, etc. Aqui, usaremos a versão 6.2.3 do PowerShell, mas para versões anteriores pode ser que os comandos e os parâmetros mudem um pouco.

Abra o PoweShell como Adminsitrador, pode ser o ISE, o console ou até mesmo pelo Visual Studio Code e execute o comando abaixo:

Install-Module Az

A instalação do módulo iniciará e aparecerá a imagem para acompanhamento da instalação dos pacotes:

Figura 1 – Instalação do Módulo Az

Após a instalação do módulo, devemos importá-lo para a sessão:

Import-Module Az -Force

Figura 2 – Importação para a Sessão

Depois de instalado e carregado, basta conectar na conta do Azure pelo PowerShell. O comando abaixo vai mostrar um endereço e um código pra autenticação:

Connect-AzAccount

Figura 3 – Código para Autenticação

No endereço https:\\microsoft.com\devicelogin será solicitado o código apresentado na mensagem:

Figura 4 – Informar o Código

Depois você será direcionado para a página de login do Azure:

Figura 5 – Login do Azure

Após vinculado, vamos iniciar a criação dos recursos. O primeiro à ser criado será o Resource Group para agregar os recursos que comentamos no início deste post. O comando New-AzResourceGroup obriga que seja informado dois parâmetros, o nome do Resource Group e a localização dele. Em nosso exemplo, vamos criar como nome “Artigo” e com a localização no “Sul do Brasil”:

New-AzResourceGroup -Name Artigo -Location brazilsouth

Figura 6 – Resource Group

Quando o comando termina, uma tela simular a apresentada acima informará um breve resumo do recurso criado.

No Portal podemos ver que o Resource Group foi criado:

Figura 7 – Portal – Resource Group

Automatizando a Criação do Azure SQL Database

Para auxiliar na criação dos recursos e garantir que sejam criados sempre com as mesmas configurações, iremos gerar alguns arquivos pelo Portal (em breve falaremos sobre estes arquivos). No portal do Azure, criaremos uma nova SQL Database com todas as configurações, mas não criaremos recurso através do Portal.

Figura 8 – Portal – Nova SQL Database

Para este post, usamos as configurações da imagem acima, o restante das configurações deixamos o padrão indicado pelo Portal.

Quando chegar no guia “Review + Create” clique no link “Download a template for automation”.

Este link fará o download de um arquivo “.zip” com dois arquivos “.json”. O arquivo “template.json” tem a definição dos parâmetros do template. Este arquivo é um modelo para criação de um Azure SQL Database.

Já no outro arquivo “parameters.json”, temos o valor dos parâmetros que no arquivo de template estavam sem valor. Os valores deste arquivo são personalizados a cada nova instalação.

De volta ao prompt do PowerShell, o modulo AZ possui o comando New-AzResourceGroupDeployment. Este comando é usado para criar qualquer recurso a partir dos arquivos de configuração. Quatro parâmetros são obrigatórios, sendo: o nome do recurso, o nome do Resource Group, o caminho para o arquivo do template e de parâmetros. Confira o exemplo abaixo:

New-AzResourceGroupDeployment -Name “SQLArtigo” -ResourceGroupName “Artigo”  `

-TemplateFile D:\SQLDatabase\template.json” `

-TemplateParameterFile “D:\SQLDatabase\parameters.json”

Figura 9 – New-AzResourceGroupDeployment

A conclusão do comando indica que o servidor do Azure finalizou a criação. Podemos revisar estes parâmetros graficamente no Portal.

Figura 10 – Portal – New-AzResourceGroupDeployment

Para conectar podemos utilizar o SSMS informando: o endereço do SQL Database, e Usuário e Senha que foram definidos no arquivo de parâmetros.

Considerações:

  1. Para criar as duas VMs os passos são os mesmos, o que vai definir o recurso e as configurações são os arquivos.
  2. Imagine que seja necessário criar diversos Azure SQL Databases com nomes, usuários e senhas diferentes. Os arquivos template e parameter podem ser copiados e alterados conforme a necessidade. Se houver diversos arquivos de configurações, pode ser feito um “loop”no PowerShell que lê os arquivos e cria os recursos. As possibilidades de utilizar o PowerShell com o Azure são muitas!
  3. Foi apresentado neste post somente 4 comandos, para instalar e importar o módulo, criar o grupo de recursos e criar novos recursos. Contudo, há diversos outros comandos, tais como: parar e remover VMs, remover grupos de recursos, etc.

Esperamos que este post tenha ajudado (ou motivado) você a usar o PowerShell no Azure. Até o próximo post pessoal! Abraço!