Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

351
Vistas
¿Cuándo aprovisionar en Packer vs Terraform?

Me encuentro en una situación en la que necesito aprovisionar instancias EC2 con algunos paquetes al inicio. Existen un par de restricciones (empresariales/corporativas):

  • Necesito aprovisionar sobre una AMI específica, que agrega cosas empresariales como acceso LDAP/AD, etc.
  • Estos cambios están destinados a ser utilizados para todas las máquinas de desarrollo internas.

Debido principalmente a la segunda restricción, me preguntaba cuál es el mejor lugar para colocar el aprovisionamiento. Esto es lo que se me ocurrió

Provisión en Terraform

Como dice, simplemente aprovisiono en terraform para las instancias necesarias. Si empaqueto estos recursos en módulos, entonces el aprovisionamiento no se "fugará". Las desventajas

  • ¿No podré agregar un conjunto diferente de pasos de aprovisionamiento encima del módulo?
  • ¿Un cambio en el aprovisionamiento probablemente resultará en la destrucción de instancias al aplicar?
  • El aprovisionamiento lleva mucho tiempo debido a los paquetes que intenta instalar

Aprovisionamiento en Packer

Esto se basa en la suposición de que Packer le permite aprovisionar sobre las AMI para que las AMI se puedan "extender". Además, esto solo se usará en AWS, por lo que no necesariamente usará otros constructores. El aprovisionamiento en Packer hace que el código de Terraform sea mucho más simple y las aplicaciones de terraform serán más rápidas porque solo se activa una AMI.

Para mí, ambos métodos tienen su lugar. Pero lo que realmente quiero saber es cuándo elige Packer Provisioning en lugar de Terraform Provisioning.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El uso de Packer para crear imágenes terminadas (o casi terminadas) reduce drásticamente el tiempo que lleva implementar nuevas instancias y también le permite usar grupos de ajuste de escala automático.

Si tiene Terraform ejecutando un aprovisionador como Chef o Ansible en cada creación de instancias EC2, agrega un período de tiempo para que el aprovisionador se ejecute en el momento en que necesita implementar nuevas instancias. En mi opinión, es mucho mejor hacer la configuración por adelantado usando Packer para incorporar todo lo posible en la AMI y luego usar secuencias de comandos/herramientas de datos de usuario como Consul-Template para proporcionar diferencias específicas del entorno.

Packer ciertamente puede construir sobre imágenes y, de hecho, requiere que se especifique un source_ami . Recomiendo enfáticamente etiquetar sus AMI de una manera que le permita usar source_ami_filter en la fuente de aws_ami aws_ami de Packer y Terraform, de modo que cuando realice cambios en sus AMI, Packer y Terraform los extraerán automáticamente para construirlos o implementarlos en el Próxima oportunidad.

Personalmente, preparo una AMI "Base" razonablemente liviana que hace un refuerzo básico y configura el monitoreo y el registro que quiero para todas las instancias que se implementan y también se asegura de que Packer cifre el volumen raíz de la AMI. Todas las demás imágenes se crean a partir de la última AMI "Base" y no tiene que preocuparse por asegurarse de que esas cosas estén instaladas/configuradas o preocuparse por cifrar el volumen raíz.

Al integrar su configuración en la AMI, también puede avanzar hacia el modelo de infraestructura inmutable que tiene algunos beneficios importantes, ya que sabe que siempre puede desechar una instancia que tiene problemas y reemplazarla muy rápidamente por una nueva. Dependiendo de su nivel de madurez, incluso podría eliminar el acceso a las instancias para que ya no sea posible cambiar nada en la instancia una vez que se haya implementado, lo que, según mi experiencia, es un factor importante en los problemas operativos.

Muy ocasionalmente puede encontrarse con algo que dificulta mucho la creación de una AMI y, en esos casos, puede optar por ejecutar sus scripts de aprovisionamiento en un aprovisionador de Terraform cuando se está creando. A veces, simplemente es más fácil mover un proceso existente para usar aprovisionadores con Terraform que hornear las AMI, pero presionaría para mover las cosas a Packer cuando sea posible.

over 4 years ago · Santiago Trujillo Denunciar

0

Me he encontrado con la misma situación. Según mi entendimiento

  • Si abre sus instancias EC2 con mucha frecuencia, digamos 2 o 3 veces al día, cree una AMI personalizada con Packer y luego llame a la AMI a través de terraform.
  • Si su imagen base (AMI creada por Packer) cambia con frecuencia según sus requisitos, entonces es bueno usar Packer. Pero para mí, ejecutar scripts de un empaquetador consume mucho tiempo.
  • También puedes hacer lo mismo con Packer. Puede escribir sus requisitos en un script y llamarlo en terraform. Tener todo incorporado en un script de terraformación reduciría algo de tiempo

Finalmente, es su decisión y su frecuencia de abrir instancias EC2.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda