Provisionamento de Recursos com Terraform na Azure
Introdução
O Terraform é uma ferramenta de código aberto para “Infrastructure as Code” (IaC), que permite criar, atualizar e destruir infraestrutura de forma programática e controlada. Ao definir recursos em arquivos de configuração, é possível gerenciar sua infraestrutura de maneira eficiente, versionada e reutilizável. Neste artigo, vamos explorar como usar o Terraform para provisionar uma máquina virtual na Microsoft Azure, incluindo um exemplo prático de como hospedar uma aplicação Flask.
Pré-requisitos
Antes de começar, você precisa:
- Uma conta no Microsoft Azure.
- Instalar o Azure CLI e o Terraform em sua máquina.
- Configurar as credenciais do Azure executando:
az loginDigite suas credenciais de acesso. A azure retornará a seguinte mensagem.

Configurando o Projeto no Azure
Criar um Grupo de Recursos no Azure: No portal do Azure, crie um novo grupo de recursos para gerenciar todos os recursos deste projeto, ou faça isso via CLI.
Aqui está um exemplo completo de como criar um grupo de recursos chamado meuGrupoDeRecursos na localização brazilsouth:
az group create --name meuGrupoDeRecursos --location brazilsouth
# Verifique se o grupo de recursos foi criado
az group list --output table
Verificar a Assinatura Ativa: O Terraform utilizará essa assinatura. Para definir uma assinatura, use:
az account set --subscription "ID_DA_SUA_ASSINATURA"Exemplo Prático: Provisionamento de uma VM para Rodar uma Aplicação Flask
Neste exemplo, vamos criar um ambiente para hospedar uma aplicação Flask. O Terraform será usado para provisionar uma máquina virtual no Azure e configurar o firewall para permitir o tráfego HTTP na porta padrão do Flask.
Criar o Diretório do Projeto
Crie um novo diretório para o projeto Terraform:
mkdir terraform-azure-flask
cd terraform-azure-flaskConfigurar o Arquivo main.tf
No diretório do projeto, crie um arquivo chamado main.tf com as configurações abaixo. Este arquivo define o provedor Azure, cria uma máquina virtual e configura o firewall para permitir o acesso à aplicação.
provider "azurerm" {
features {}
subscription_id = "YOUR_SUBSCRIPTION_ID" # Substitua pelo ID da sua assinatura
}
resource "azurerm_resource_group" "example" {
name = "myResourceGroup"
location = "brazilsouth"
}
resource "azurerm_virtual_network" "example" {
name = "myVNet"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
resource "azurerm_subnet" "example" {
name = "mySubnet"
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.1.0/24"]
}
resource "azurerm_network_interface" "example" {
name = "myNIC"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_configuration {
name = "myIPConfig"
subnet_id = azurerm_subnet.example.id
private_ip_address_allocation = "Dynamic"
}
}
resource "azurerm_virtual_machine" "flask_vm" {
name = "flaskVM"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
network_interface_ids = [azurerm_network_interface.example.id]
vm_size = "Standard_DS1_v2"
storage_os_disk {
name = "myOSDisk"
caching = "ReadWrite"
create_option = "FromImage"
}
os_profile {
computer_name = "hostname"
admin_username = "adminuser"
admin_password = "AdminPassword1234!" # Use um gerador de senhas mais forte
custom_data = <<-EOF
#!/bin/bash
sudo apt-get update
sudo apt-get install -y python3 python3-pip
pip3 install flask
cat << 'EOF2' > /home/ubuntu/app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Azure from Flask!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
EOF2
nohup python3 /home/ubuntu/app.py &
EOF
}
os_profile_linux_config {
disable_password_authentication = false
}
storage_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "18.04-LTS"
version = "latest"
}
tags = {
environment = "dev"
}
}
Provisionando a Infraestrutura
Com o main.tf configurado, execute os comandos abaixo para provisionar a infraestrutura:
Inicializar o Terraform para baixar os plugins necessários:
terraform initVerificar o Plano de Execução:
terraform planCinco recursos serão provisionados.

Aplicar as Configurações para criar os recursos:
terraform apply --auto-approve
Se tudo estiver correto, o Terraform criará a máquina virtual e configurará as regras de firewall necessárias.

Acessar a Aplicação Flask
Após a criação da VM, acesse o endereço IP público da VM no navegador com:
http://[IP-PUBLICO]:5000Se tudo estiver configurado corretamente, você verá a mensagem: “Hello, Azure from Flask!”.
Limpando os Recursos
Para evitar cobranças, destrua os recursos criados após o uso:
terraform destroy --auto-approveConclusão
Neste artigo, exploramos o uso do Terraform para provisionar uma máquina virtual na Azure, pronta para hospedar uma aplicação Flask. Este exemplo serve como uma base para criar ambientes de desenvolvimento rapidamente, garantindo que os recursos sejam destruídos quando não são mais necessários para evitar custos adicionais.
Próximos Passos
Experimente o Terraform com outros recursos da Azure, como Azure Kubernetes Service (AKS) para orquestrar contêineres, Azure SQL para bancos de dados e outros serviços gerenciados.
Até a próxima!

Nenhum comentário:
Postar um comentário