IaC na Azure [2/X] – Criando a Resource, Network e VM

Dando seguimento na construção do nosso ambiente, vamos criar nosso servidor controlador do IaC.

Estamos escolhendo usar um VM para esse modelo, por que vamos lidar com uma arquitetura mista de VMs e AKS. Desta forma, fazer VMs falar com VMs é mais tranquilo e funcional do que fazer todo o AKS conversar com outros AKS e outra VMs.

Resource Group

Começamos criando nosso novo Resource Group da Azure.

Usando o comando:

az group create --name default-shd-eastus2 --location eastus2

O resultado deve ser algo parecido com isso:

{
  "id": "/subscriptions/e4b78a04-e26c-442a-a7b1-38827034e6ec/resourceGroups/default-shd-eastus2",
  "location": "eastus2",
  "managedBy": null,
  "name": "default-shd-eastus2",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

Para saber mais sobre o motivo do nome desse Resource Group e outros nomes, veja nosso post de nomenclaturas

Se você não for usa a localização de eastus2, você pode usar o comando abaixo para saber o nome da localização de sua escolha

az account list-locations

Rede – Azure VNet

Depois da construção do Resource Group, devemos fazer a construção da nossa primeira VNet, que ira acolher nosso conteúdo da estrutura Shared.

az network vnet create --name default-shd-eastus2 --resource-group default-shd-eastus2 \
 --address-prefixes 172.16.0.0/16

Com a VNet criada, devemos compor nosso NSG (Network security groups), esse elemento fornece a configuração de permissões que iremos usar na nossa SubNet mais a frente.

az network nsg create --name iac-default-shd-eastus2 --resource-group default-shd-eastus2

Com o NSG criado, precisamos já deixar liberada a regra de entrada SSH para a VM que iremos colocar em funcionamento.

az network nsg rule create --resource-group default-shd-eastus2 --nsg-name iac-default-shd-eastus2 --name allow-ssh --direction Inbound --priority 100 --source-address-prefixes '*' --source-port-ranges '*' --destination-address-prefixes '*' --destination-port-ranges 22 --access Allow --protocol tcp --description "Allow inbound ssh"

Agora podemos juntar tudo e montar a nossa subnet. Para essa subnet, escolhemos o range 172.16.5.0/24 que é parte do range 172.16.0.0/16.

az network vnet subnet create --address-prefixes 172.16.5.0/24 --name iac-default-shd-eastus2 --resource-group default-shd-eastus2 --vnet-name default-shd-eastus2 --network-security-group iac-default-shd-eastus2

Criando nossa VM Agente

Agora que temos nossa rede criada e configurada, devemos criar nossa primeira VM de agente. Ela servira para prover a execução do Ansebly. Precisamos de uma maquina bem simples, sem muitos recursos.

Esses passos são necessários, porque até o momento, não temos como usar o próprio Ansebly para fazer a execução. “Estamos trancados para fora”. Assim que conseguimos ter nosso primeiro agente executor, podemos refazer essa VM dentro do modelo do próprio Ansebly.

Primeira coisa a fazer é cria uma chave RSA, usando o comando a baixo trocando onde será a geração da sua chave

ssh-keygen -m PEM -t rsa -b 4096 -f /caminho/da/chave/nome.pem

No meu caso, ficou assim a execução:

pferreira25@SSDesk01:~$ ssh-keygen -m PEM -t rsa -b 4096 -f ~/minhaChaves/iac/iac.pem
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pferreira25/minhaChaves/iac/iac.pem
Your public key has been saved in /home/pferreira25/minhaChaves/iac/iac.pem.pub
The key fingerprint is:
SHA256:HFY7gD+RdxrOu7Duxps46HVKBqWeo3iqvpNCdPhGHo0 pferreira25@SSDesk01
The key's randomart image is:
+---[RSA 4096]----+
|       ....      |
|      . ooo..    |
|  . o ..o=o+     |
| o E + oo.+.     |
|. = +   S. .     |
| . = o  . .      |
|. o +.+..o .     |
|.+...=.++..      |
|B=+.. o==.       |
+----[SHA256]-----+

Agora, podemos fazer a criação da nossa VM.

az vm create --name ansebly-shd-tmp-01 --resource-group default-shd-eastus2 --image UbuntuLTS --vnet-name default-shd-eastus2 --subnet iac-default-shd-eastus2 --data-disk-sizes-gb 4 --size Standard_B1s --admin-username azureuser --ssh-key-value /home/pferreira25/minhaChaves/iac/iac.pem.pub

Depois da execução, vamos ter algo parecido com isso:

{
  "fqdns": "",
  "id": "/subscriptions/e4b78a04-e26c-442a-a7b1-38827034e6ec/resourceGroups/default-shd-eastus2/providers/Microsoft.Compute/virtualMachines/ansebly-shd-tmp-01",
  "location": "eastus2",
  "macAddress": "00-0D-3A-0D-9F-AC",
  "powerState": "VM running",
  "privateIpAddress": "172.16.5.4",
  "publicIpAddress": "52.138.101.180",
  "resourceGroup": "default-shd-eastus2",
  "zones": ""
}

Agora podemos fazer o uso do SSH e se conectar na nossa VM

ssh azureuser@52.138.101.180 -i /home/pferreira25/minhaChaves/iac/iac.pem

Seguimos com o resto nos próximos posts. 🙂