Automação de Infraestrutura com Ansible e Terraform no Linux
A gestão manual de servidores e aplicações pode ser tediosa e propensa a erros. Este artigo resolve esse problema apresentando como usar Ansible e Terraform para automatizar a provisionamento e gerenciamento de infraestrutura em ambientes Linux.
Introdução ao Ansible e Terraform
Ansible e Terraform são ferramentas poderosas para automação de infraestrutura. Enquanto o Ansible é uma ferramenta de automação de configuração, o Terraform é uma ferramenta de provisionamento de infraestrutura como código (IaC). Juntas, elas permitem a criação de ambientes consistentes e repetíveis.
Configurando o Ambiente
Antes de começar, certifique-se de ter Ansible e Terraform instalados em sua máquina. Para instalar o Ansible, use:
sudo apt update
sudo apt install ansible
Para instalar o Terraform, baixe o binário apropriado para seu sistema operacional e coloque-o em seu PATH.
Usando Ansible para Configuração de Servidores
Playbook Básico
Um playbook do Ansible é um arquivo YAML que define tarefas de configuração. Aqui está um exemplo básico que instala o Apache:
# playbook.yml
---
- name: Instalar e configurar Apache
hosts: webservers
become: yes
tasks:
- name: Atualizar repositórios
apt:
update_cache: yes
- name: Instalar Apache
apt:
name: apache2
state: present
- name: Iniciar e habilitar Apache
service:
name: apache2
state: started
enabled: yes
Playbook Avançado
Este playbook mais avançado instala o Apache e configura um site virtual:
# advanced-playbook.yml
---
- name: Configurar site virtual Apache
hosts: webservers
become: yes
vars:
site_name: meusite.com
site_root: /var/www/meusite
tasks:
- name: Instalar Apache
apt:
name: apache2
state: present
- name: Criar diretório do site
file:
path: "{{ site_root }}"
state: directory
- name: Copiar arquivo de configuração do site
template:
src: site.conf.j2
dest: /etc/apache2/sites-available/{{ site_name }}.conf
- name: Habilitar site
command: a2ensite {{ site_name }}.conf
- name: Reiniciar Apache
service:
name: apache2
state: restarted
Usando Terraform para Provisionamento de Infraestrutura
Provisionando uma Instância EC2 no AWS
Este exemplo usa Terraform para provisionar uma instância EC2 no AWS:
# main.tf
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
Provisionando Infraestrutura Complexa
Este exemplo provisiona uma infraestrutura mais complexa com VPC, subnets e security groups:
# main.tf
provider "aws" {
region = "us-west-2"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
}
resource "aws_security_group" "web" {
vpc_id = aws_vpc.main.id
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [aws_security_group.web.id]
associate_public_ip_address = true
}
Por que Isso Importa / Quando Usar
A automação de infraestrutura com Ansible e Terraform é crucial para:
- Consistência: Garante que todos os ambientes sejam configurados de maneira idêntica.
- Eficiência: Reduz o tempo necessário para provisionar e configurar servidores.
- Escalabilidade: Facilita o provisionamento de múltiplas instâncias de forma rápida e segura.
- Manutenção: Centraliza a configuração em um único lugar, facilitando atualizações e correções.
Conexão com Certificações LPI/CompTIA
Dominar Ansible e Terraform é essencial para quem busca certificações como LPI Linux Essentials e CompTIA Linux+. Essas habilidades são altamente valorizadas no mercado de trabalho e demonstram sua capacidade de gerenciar infraestruturas complexas de maneira eficiente e segura.