¿Qué hace aws-ami-builder?
Crea imágenes de máquina de Amazon (AMIs) con Packer usando el builder amazon-ebs. Úsalo para crear AMIs personalizadas para instancias EC2.
¿Qué es?
Esta capacidad te permite construir AMIs de forma reproducible y automatizada mediante Packer. El builder amazon-ebs lanza una instancia EC2 temporal desde una AMI base, ejecuta provisionadores (shell, Ansible, etc.) para personalizarla y luego crea una nueva AMI a partir del estado final de la instancia.
¿Por qué usarlo?
- Consistencia: garantiza que todas las instancias EC2 se inicien desde una imagen estándar y probada.
- Velocidad: reduce el tiempo de configuración en caliente (bootstrapping) al tener paquetes, parches y configuraciones preinstalados.
- Automatización: se integra en pipelines CI/CD para reconstruir imágenes periódicamente.
¿Cómo funciona?
- Definir una plantilla (
.pkr.hclo.json) que incluya:- Región de AWS y tipo de instancia.
- AMI base (ID, filtro o nombre).
- Configuración de red (subred, grupo de seguridad).
- Provisionadores (shell, Ansible, etc.).
- Comportamiento de limpieza (terminar instancia, eliminar volumen).
- Ejecutar Packer: normalemente con
packer build template.pkr.hcl. - Resultado: una nueva AMI registrada en tu cuenta de AWS, lista para usar en lanzamientos de EC2, Auto Scaling Groups o ECS.
Ejemplo rápido
source "amazon-ebs" "example" {
region = "us-east-1"
source_ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
ssh_username = "ec2-user"
tags = {
Name = "MyCustomAMI"
}
}
build {
sources = ["source.amazon-ebs.example"]
provisioner "shell" {
inline = [
"sudo yum update -y",
"sudo yum install -y nginx",
"sudo systemctl enable nginx"
]
}
}
Notas importantes
- Asegúrate de tener las credenciales de AWS configuradas (variables de entorno
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEY, o perfil de IAM). - La instancia temporal incurrirá en costos de EC2 mientras esté activa; Packer la termina automáticamente al finalizar.
- Puedes usar filtros de AMI para seleccionar la imagen base más reciente de una familia (por ejemplo,
amzn2-ami-hvm-*-x86_64-gp2). - Los tags aplicados a la AMI y a los volúmenes se definen en el bloque
source.
Requisitos
- Packer instalado (v1.7+ recomendado).
- Cuenta de AWS con permisos para
ec2:RunInstances,ec2:CreateImage,ec2:RegisterImage,ec2:DescribeInstances,ec2:TerminateInstances. - Credenciales de AWS válidas.