Infrastructure as Code (IaC) no Azure: Passo a Passo para Iniciar no Linux/Ubuntu com um Computador de Estudante

Este guia passo a passo vai te ensinar como começar a usar Infrastructure as Code (IaC) no Microsoft Azure usando um computador com Linux/Ubuntu. Vamos usar o Terraform, uma das ferramentas mais populares para gerenciar infraestrutura na nuvem, focando na criação de recursos no Azure.


Pré-requisitos:

  • Sistema Operacional: Linux/Ubuntu
  • Recursos do Computador: 4 GB de RAM, 2 núcleos de CPU, armazenamento livre (mínimo 10 GB)
  • Nível de Conhecimento: Básico em Linux e nuvem
  • Ferramenta de IaC: Terraform

Passo 1: Instalar o Terraform no Ubuntu

1.1. Atualizar os pacotes do sistema

Antes de instalar o Terraform, certifique-se de que todos os pacotes do seu sistema estão atualizados.

sudo apt update && sudo apt upgrade -y

1.2. Instalar o Terraform

  1. Adicione o repositório oficial da HashiCorp:
sudo apt install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
  1. Adicione o repositório do Terraform:
sudo apt-add-repository "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
  1. Instale o Terraform:
sudo apt update && sudo apt install terraform
  1. Verifique a instalação:
terraform -v

Esse comando confirma que o Terraform foi instalado corretamente.

Termos de Pesquisa: “Instalar Terraform no Ubuntu”, “Como configurar Terraform no Linux”, “Tutoriais básicos de Terraform”


Passo 2: Criar e Configurar uma Conta no Azure

2.1. Criar uma Conta no Azure

  1. Acesse o portal do Azure e crie uma conta. O Azure oferece um crédito gratuito para novos usuários, permitindo a criação de vários serviços gratuitamente.

2.2. Criar um Service Principal (Credenciais para o Terraform)

Para o Terraform gerenciar recursos no Azure, precisamos de um Service Principal, que fornecerá as permissões necessárias para acessar e manipular a infraestrutura.

  1. Abra o Cloud Shell no portal do Azure.
  2. No terminal do Azure, crie um Service Principal com o seguinte comando:
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/SUA_SUBSCRIPTION_ID"

Esse comando retornará as seguintes informações, que você deve salvar:

  • appId: ID da aplicação
  • password: Senha
  • tenant: ID do locatário (tenant)

Dica: Substitua SUA_SUBSCRIPTION_ID pelo seu ID de assinatura, que pode ser encontrado no painel de assinaturas do Azure.

Termos de Pesquisa: “Azure Service Principal Terraform”, “Como configurar credenciais no Azure para Terraform”


Passo 3: Configurar o Terraform para o Azure

Agora que temos as credenciais do Service Principal, vamos configurá-las no Terraform.

3.1. Criar o Diretório do Projeto

Abra o terminal no Ubuntu e crie uma pasta para o seu projeto:

mkdir ~/meu-projeto-terraform-azure
cd ~/meu-projeto-terraform-azure

3.2. Criar o Arquivo de Configuração main.tf

Dentro da pasta do projeto, crie um arquivo chamado main.tf:

nano main.tf

Cole o seguinte código no arquivo para configurar o provedor do Azure:

provider "azurerm" {
  features {}

  subscription_id = "SUA_SUBSCRIPTION_ID"
  client_id       = "SEU_APP_ID"
  client_secret   = "SEU_PASSWORD"
  tenant_id       = "SEU_TENANT_ID"
}
  • subscription_id: ID da sua assinatura do Azure.
  • client_id: appId retornado pelo comando do Service Principal.
  • client_secret: password retornado.
  • tenant_id: ID do locatário retornado.

3.3. Inicializar o Terraform

Execute o seguinte comando para inicializar o Terraform e preparar os plugins necessários:

terraform init

Esse comando vai preparar o ambiente para trabalhar com o Azure.


Passo 4: Criar um Recurso no Azure (VM)

Agora vamos definir um código simples no Terraform para criar uma máquina virtual (VM) no Azure.

4.1. Adicionar Código para Criar uma VM no Azure

No arquivo main.tf, abaixo da configuração do provedor, adicione o seguinte código para criar uma máquina virtual:

resource "azurerm_resource_group" "rg" {
  name     = "MeuResourceGroup"
  location = "East US"
}

resource "azurerm_virtual_network" "vnet" {
  name                = "MinhaVNET"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
}

resource "azurerm_subnet" "subnet" {
  name                 = "MinhaSubnet"
  resource_group_name  = azurerm_resource_group.rg.name
  virtual_network_name = azurerm_virtual_network.vnet.name
  address_prefixes     = ["10.0.1.0/24"]
}

resource "azurerm_network_interface" "nic" {
  name                = "MinhaNIC"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    name                          = "ConfiguracaoIP"
    subnet_id                     = azurerm_subnet.subnet.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_virtual_machine" "vm" {
  name                  = "MinhaVM"
  location              = azurerm_resource_group.rg.location
  resource_group_name   = azurerm_resource_group.rg.name
  network_interface_ids = [azurerm_network_interface.nic.id]
  vm_size               = "Standard_B1s" # Tamanho compatível com estudantes e nível gratuito

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "18.04-LTS"
    version   = "latest"
  }

  storage_os_disk {
    name              = "DiscoOS"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }

  os_profile {
    computer_name  = "MinhaVM"
    admin_username = "azureuser"
    admin_password = "SenhaSegura123!"
  }

  os_profile_linux_config {
    disable_password_authentication = false
  }
}

4.2. Explicação do Código

  • azurerm_resource_group: Cria um grupo de recursos no Azure.
  • azurerm_virtual_network: Cria uma rede virtual (VNet) dentro do grupo de recursos.
  • azurerm_subnet: Cria uma sub-rede dentro da VNet.
  • azurerm_network_interface: Configura a interface de rede para a VM.
  • azurerm_virtual_machine: Cria uma VM Ubuntu usando o tamanho de máquina virtual Standard_B1s, que é acessível e compatível com o nível gratuito do Azure.

4.3. Criar o Plano de Execução

Para verificar o que o Terraform fará, execute o comando:

terraform plan

Esse comando exibirá uma lista dos recursos que serão criados.

4.4. Aplicar o Código

Agora, para provisionar a infraestrutura no Azure, execute o seguinte comando:

terraform apply

Quando o Terraform pedir confirmação, digite yes.

Isso criará todos os recursos no Azure, incluindo uma máquina virtual Ubuntu.


Passo 5: Limpar a Infraestrutura

Quando você terminar de usar os recursos, é importante removê-los para evitar cobranças. Execute o comando abaixo para destruir todos os recursos criados:

terraform destroy

Isso vai desprovisionar todos os recursos que você criou com o Terraform.


Passo 6: Melhorando a Automação e Boas Práticas

Agora que você criou sua primeira infraestrutura com o Terraform, considere adotar boas práticas para projetos maiores e mais complexos:

  1. Uso de Variáveis: Ao invés de hard-codar as credenciais e parâmetros, use variáveis. Exemplo de variáveis:
   variable "location" {
     default = "East US"
   }

   provider "azurerm" {
     features {}
     subscription_id = "SUA_SUBSCRIPTION_ID"
     client_id       = "

SEU_APP_ID"
     client_secret   = "SEU_PASSWORD"
     tenant_id       = "SEU_TENANT_ID"
   }
  1. Automatização: Integre seus arquivos Terraform com CI/CD pipelines para automação contínua e testes.
  2. Versionamento: Use Git para armazenar e versionar seu código.

Termos de Pesquisa: “Terraform best practices”, “Azure VM Terraform automation”, “Como configurar pipelines para Terraform”


Conclusão

Seguindo este guia, você configurou o Terraform em um ambiente Ubuntu e provisionou uma máquina virtual no Azure. Essa é uma introdução básica ao mundo do Infrastructure as Code com Terraform e Azure, ideal para estudantes que estão começando. Continue explorando outras funcionalidades, como balanceadores de carga, bancos de dados e automação de rede, para ganhar mais experiência.


Dicas de Termos de Busca (para continuar aprendendo):

  • “Terraform Azure tutorial”
  • “Criar VMs com Terraform no Azure”
  • “Best practices Terraform no Azure”

Termos no YouTube:

  • “Azure VM Terraform setup”
  • “Terraform with Azure tutorial”
  • “Criando infraestruturas no Azure com Terraform”
Edvaldo Guimrães Filho Avatar

Published by

Categories:

Leave a comment