Automatización de infraestructura con Ansible y Terraform en Linux
La gestión manual de servidores y aplicaciones puede ser tediosa y propensa a errores. Este artículo resuelve ese problema presentando cómo usar Ansible y Terraform para automatizar el aprovisionamiento y gestión de infraestructura en entornos Linux.
Introducción a Ansible y Terraform
Ansible y Terraform son herramientas poderosas para automatización de infraestructura. Mientras que Ansible es una herramienta de automatización de configuración, Terraform es una herramienta de aprovisionamiento de infraestructura como código (IaC). Juntas, permiten la creación de entornos consistentes y repetibles.
Configurando el Entorno
Antes de comenzar, asegúrate de tener Ansible y Terraform instalados en tu máquina. Para instalar Ansible, usa:
sudo apt update
sudo apt install ansible
Para instalar Terraform, descarga el binario apropiado para tu sistema operativo y colócalo en tu PATH.
Usando Ansible para Configuración de Servidores
Playbook Básico
Un playbook de Ansible es un archivo YAML que define tareas de configuración. Aquí hay un ejemplo básico que instala 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 Avanzado
Este playbook más avanzado instala Apache y configura un sitio 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 Aprovisionamiento de Infraestructura
Aprovisionando una Instancia EC2 en AWS
Este ejemplo usa Terraform para aprovisionar una instancia EC2 en AWS:
# main.tf
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
Aprovisionando Infraestructura Compleja
Este ejemplo aprovisiona una infraestructura más compleja con VPC, subnets y 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 Qué Es Importante / Cuándo Usar
La automatización de infraestructura con Ansible y Terraform es crucial para:
- Consistencia: Garantiza que todos los entornos se configuren de manera idéntica.
- Eficiencia: Reduce el tiempo necesario para aprovisionar y configurar servidores.
- Escalabilidad: Facilita el aprovisionamiento de múltiples instancias de forma rápida y segura.
- Mantenimiento: Centraliza la configuración en un único lugar, facilitando actualizaciones y correcciones.
Conexión con Certificaciones LPI/CompTIA
Dominar Ansible y Terraform es esencial para quienes buscan certificaciones como LPI Linux Essentials y CompTIA Linux+. Estas habilidades son muy valorizadas en el mercado laboral y demuestran tu capacidad de gestionar infraestructuras complejas de manera eficiente y segura.
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.