Configura en minutos una base sólida de infraestructura como código en AWS con Terraform, módulos IAM, policies, roles y estado remoto en S3. Aprenderás a estructurar carpetas, crear policies en json, conectar módulos con outputs y ejecutar los comandos clave: init, fmt, plan y apply. Resultado: un rol con permisos para RDS y logs en CloudWatch listo para tus funciones Lambda.
¿Cómo preparar el entorno con Make y Terraform?
Para automatizar y versionar la infraestructura se usan infraestructura como código, Make y Terraform. La verificación y la instalación correcta evitan fallos al ejecutar los planes.
¿Qué herramientas instalar y cómo verificar la instalación?
Instala Make en Mac o Linux por defecto. En Windows: instalar manualmente.
Verifica que quedó instalado: make --version.
Descarga Terraform desde su landing para Mac, Windows o Linux.
¿Cómo organizar la carpeta infra y el backend en S3?
En la raíz del proyecto crea una carpeta: infra o terraform.
Dentro vivirá todo: módulos, policies, roles y archivos .tf.
Configura el backend en S3 para guardar el estado remoto: bucket platzi-tf-security, key predeterminada terraform.tfstate, región us-east-2 (Ohio).
Define que trabajarás con AWS y usa la región más cercana a ti.
¿Cómo modelar IAM con módulos, policies y roles en Terraform?
La sintaxis de Terraform “trae” valores de afuera hacia adentro y los referencia por nombre. Usa módulos para separar responsabilidades: iam/policies y iam/roles.
¿Cómo definir policies en json para RDS y logs?
Crea dos policies: una para acceso a RDS y otra para logs en CloudWatch.
Usa un recurso aws_iam_policy con jsonencode y genera el json con el AWS Policy Generator.
# policies/can_access_rds.tfresource "aws_iam_policy""can_access_RDS"{name="can_access_RDS"path="/"description="Databases for queries."policy= jsonencode({Version="2012-10-17",
Statement=[{Effect="Allow",
Action=[/* acciones de RDS */],
Resource="*"}]})
}output "can_access_RDS_arn" {value= aws_iam_policy.can_access_RDS.arn
}
Habilidades y conceptos aplicados: definición de recursos aws_iam_policy, uso de jsonencode, diseño de permisos con efecto Allow, acciones y resource, y exposición de ARNs con outputs.
¿Cómo crear el rol RepoCollectorPlatzi y pasar ARNs entre módulos?
En iam/roles, define variables para recibir los ARNs: RDSpolicy_arn y logPolicy_arn.
Crea el rol RepoCollectorPlatzi con su documento de asunción.
# roles/vars.tfvariable "RDSpolicy_arn" {type= string }variable "logPolicy_arn" {type= string }# roles/role.tfdata "aws_iam_policy_document""assume_role"{# documento para asumir el rol (Lambda u otro servicio)}resource "aws_iam_role""RepoCollectorPlatzi"{name="RepoCollectorPlatzi"assume_role_policy= data.aws_iam_policy_document.assume_role.json
}# adjunta las policies usando los ARNs recibidos por variables# (recurso de attachment según corresponda)output "repo_collector_role_arn" {value= aws_iam_role.RepoCollectorPlatzi.arn
}
Conecta los módulos en main.tf para pasar ARNs de policies al módulo de roles y exponer el output del rol:
¿Cómo ejecutar terraform init, plan y apply para desplegar en AWS?
Una vez creados los archivos, inicializa, formatea, valida el plan y aplica los cambios. Si el plan no muestra cambios, revisa que el main.tf importe los módulos.
¿Qué hace cada comando y cómo interpretar el plan?
terraform init: inicializa módulos y estado en S3.
terraform fmt -recursive: formatea archivos .tf.
terraform plan: muestra qué creará, cambiará o borrará, sin ejecutar.
terraform apply: aplica el plan y solicita confirmación con yes.
terraform init
terraform fmt -recursive
terraform plan
terraform apply
Expectativa del plan: crear 2 policies (RDS y logs) y 1 rolRepoCollectorPlatzi con las policies adjuntas.
¿Cómo validar en IAM que se creó todo?
En la consola de AWS IAM: verifica el rol RepoCollectorPlatzi.
Revisa que tenga adjuntas las policiescan_access_RDS y can_log.
Abre cada policy para confirmar el json de permisos.
¿Tienes dudas sobre la estructura de módulos, el backend en S3 o las policies en json? Cuéntame en los comentarios qué parte te gustaría profundizar.
La automatización también nos sirve como documentación.
Terraform es ideal para desplegar infraestructura en casos donde la codificación y gestión de recursos en la nube son requeridas sin depender de otras herramientas.
Se recomienda su uso cuando:
Se necesita un enfoque de Infraestructura como Código, permitiendo versionar y reutilizar configuraciones.
Se trabajará con múltiples proveedores de nube, como AWS, Azure o GCP, ya que Terraform permite gestionar recursos de forma unificada.
Se busca automatizar la creación y manejo de infraestructuras complejas, facilitando la colaboración en equipos DevOps.
Utilizando Terraform solo, puedes mantener un control total sobre tu infraestructura.
Comentario generado por ADA la IA de Platzi
La infraestructura como código (IaC) es una práctica en la que la infraestructura de TI se gestiona y aprovisiona a través de código en lugar de procesos manuales. Esto permite automatizar el despliegue, la configuración y la gestión de recursos en la nube, utilizando herramientas como Terraform. IaC facilita la creación de entornos reproducibles y escalables, mejorando la consistencia y reduciendo errores humanos. Es fundamental en la implementación de prácticas de DevOps y en la gestión eficiente de recursos en la nube.
Comentario generado por ADA la IA de PLatzi
Terraform es una herramienta de infraestructura como código (IaC) que permite definir y provisionar infraestructura en la nube a través de archivos de configuración. Utiliza un lenguaje declarativo para describir los recursos necesarios, como servidores, redes y bases de datos.
Con Terraform, puedes gestionar y automatizar el ciclo de vida de la infraestructura, facilitando la implementación y mantenimiento de entornos en diferentes proveedores de nube como AWS, Azure y Google Cloud. Esto contribuye a aplicar buenas prácticas de ciberseguridad al controlar accesos y proteger datos.
Comentario generado por ADA la IA de Platzi a la pregunta que es Terraform ?
Para los que no les funcione la instalación de make en Windows solo es ejecutar el instalador y en las variables de entorno agregar al path, la ruta de la carpeta bin C:\Program Files (x86)\GnuWin32\bin en este video lo explican en el minuto 1:32
y para terraform se debe descomprimir y dejar en una ruta el ejecutable y crear una variable de entorno también en el path a esa ruta