Flashcards: 353.2 - Packer

31 tarjetas de repaso. Usa el sistema de repeticion espaciada para memorizar.

P: ¿Cuáles son los tres componentes principales de un template de Packer?

R: b) Builder, Provisioner, Post-processor. Los tres componentes de un template Packer son: Builder (crea la imagen para una plataforma), Provisioner (configura la imagen durante la construcción) y Post-processor (procesa la imagen resultante, como comprimir o subir).


P: ¿Qué comando de Packer verifica la sintaxis de un template sin construir la imagen?

R: b) packer validate .. packer validate verifica que el template es sintácticamente correcto y que todas las configuraciones requeridas están presentes, sin iniciar ningún proceso de construcción.


P: ¿Qué formato de template utiliza Packer en versiones modernas (1.7+)?

R: c) HCL2 (archivos .pkr.hcl). HCL2 (HashiCorp Configuration Language v2) es el formato recomendado desde Packer 1.7+. Los archivos usan la extensión .pkr.hcl. El formato JSON anterior sigue soportado pero se considera legacy.


P: ¿Qué provisioner de Packer permite subir archivos desde el host a la imagen en construcción?

R: c) file. El provisioner file sube archivos o directorios desde el host a la imagen en construcción. Como las subidas suelen ejecutarse sin privilegios, es común subir a /tmp/ y luego mover con un provisioner shell usando sudo.


P: ¿Qué opción de packer build permite construir solo un source específico de un template multi-plataforma?

R: b) packer build -only=qemu.ubuntu .. La opción -only filtra qué sources se construyen. El formato es tipo.nombre (ej. qemu.ubuntu). La opción inversa es -except para excluir sources específicos.


P: ¿Cuál es la principal ventaja de usar Packer para crear imágenes?

R: b) Permite crear imágenes idénticas para múltiples plataformas desde un único template. Packer puede construir imágenes para QEMU, VirtualBox, VMware, AWS, Azure, GCP y más, todo desde un único template. Esto garantiza que las imágenes sean idénticas independientemente de la plataforma de destino.


P: ¿Qué builder de Packer crea imágenes para QEMU/KVM en formato qcow2?

R: c) qemu. El builder qemu crea imágenes para QEMU/KVM. Puede generar imágenes en formatos qcow2 y raw. Se configura con opciones como format, accelerator, disk_size, memory, etc.


P: ¿Qué post-processor de Packer convierte la imagen resultante en un box de Vagrant?

R: b) vagrant. El post-processor vagrant convierte la imagen resultante en un archivo .box compatible con Vagrant. Esto permite usar imágenes creadas con Packer directamente en entornos Vagrant.


P: ¿En qué bloque HCL2 de Packer se definen los provisioners y post-processors?

R: b) build { }. El bloque build asocia uno o más sources con provisioners y post-processors. El bloque source define el builder y la configuración de la imagen base. El bloque build orquesta todo el proceso de construcción.


P: ¿Qué comando inicializa Packer descargando los plugins necesarios definidos en el template?

R: c) packer init .. packer init lee el bloque packer { required_plugins { } } del template y descarga los plugins necesarios. Es similar a terraform init en Terraform. Debe ejecutarse antes del primer build o cuando se añaden nuevos plugins.


P: ¿Qué opción de packer build ejecuta la construcción paso a paso, pausando entre cada etapa para depuración?

R: b) packer build -debug. packer build -debug ejecuta la construcción en modo debug, pausando entre cada paso y mostrando información detallada. En este modo, Packer espera una confirmación del usuario para continuar con cada etapa, permitiendo inspeccionar el estado de la VM durante la construcción.


P: ¿Qué opción del builder QEMU de Packer especifica que la construcción debe ejecutarse sin interfaz gráfica?

R: b) headless = true. La opción headless = true en el builder QEMU indica que la VM se ejecutará sin interfaz gráfica durante la construcción. Esto es necesario en servidores sin entorno gráfico y en pipelines de CI/CD. Se puede acceder mediante VNC si se necesita depurar.


P: ¿Qué provisioner de Packer permite integrar Ansible para configurar la imagen durante la construcción?

R: d) Tanto a) como b) son válidos. Packer ofrece dos provisioners de Ansible: ansible (ejecuta Ansible desde la máquina host conectándose por SSH a la VM en construcción) y ansible-local (copia el playbook dentro de la VM y lo ejecuta localmente). El provisioner ansible es más común y no requiere Ansible instalado en la imagen.


P: ¿Qué opción de packer build permite excluir un source específico de la construcción?

R: b) packer build -except=qemu.ubuntu .. La opción -except excluye sources específicos de la construcción. Es la opción inversa a -only. Útil cuando se quiere construir para todas las plataformas excepto una o algunas. Ejemplo: packer build -except=virtualbox-iso.linux . construye todo excepto la imagen de VirtualBox.


P: ¿Qué post-processor de Packer genera un archivo de checksums para verificar la integridad de la imagen construida?

R: c) checksum. El post-processor checksum genera archivos de verificación de integridad para las imágenes construidas. Se configura con checksum_types para especificar los algoritmos (sha256, md5, sha512). El archivo resultante contiene el hash y puede distribuirse junto con la imagen.


P: ¿Qué tipo de variable de Packer HCL2 impide que su valor aparezca en los logs de construcción?

R: b) sensitive = true. Marcar una variable con sensitive = true en HCL2 hace que Packer oculte su valor en los logs de construcción, mostrando <sensitive> en su lugar. Es esencial para contraseñas, tokens y otros datos sensibles que se pasan como variables al template.


P: ¿Cuál es el flujo de trabajo correcto para construir una imagen con Packer?

R: b) init, validate, build. El flujo correcto es: 1) packer init . para descargar plugins, 2) packer validate . para verificar la sintaxis, 3) opcionalmente packer fmt . para formatear, y 4) packer build . para construir la imagen. Este flujo garantiza que todo esté correctamente configurado antes de la construcción.


P: ¿Qué elemento del builder de Packer define la secuencia de teclas enviadas a la VM para automatizar la instalación del SO?

R: b) boot_command. boot_command es una lista de cadenas que se envían como pulsaciones de teclas a la VM durante el arranque. Se usa para automatizar la instalación del SO (seleccionar opciones del menú de arranque, pasar parámetros de kernel, etc.). Soporta plantillas como {{ .HTTPIP }} y {{ .HTTPPort }} para autoinstall.


P: ¿Por qué es necesario subir archivos a /tmp/ con el file provisioner en lugar de directamente a rutas del sistema como /etc/?

R: b) El file provisioner se ejecuta sin privilegios root, por lo que no puede escribir en rutas protegidas. El file provisioner sube archivos usando la conexión SSH del usuario configurado, que normalmente no tiene privilegios de root. Por eso se suben primero a /tmp/ (accesible por todos) y luego se mueven a su destino final con un shell provisioner usando sudo mv.


P: ¿Qué builder de Packer crea Amazon Machine Images (AMI) a partir de una instancia EC2?

R: c) amazon-ebs. El builder amazon-ebs crea AMIs lanzando una instancia EC2, configurándola con provisioners y luego creando una AMI a partir de la instancia. El nombre hace referencia al almacenamiento EBS (Elastic Block Store) que se usa para el volumen raíz de la imagen resultante.


P: Escribe el comando para construir una imagen con Packer usando el template en el directorio actual.

R: packer build .. packer build . lee todos los archivos .pkr.hcl del directorio actual y construye las imágenes definidas. Packer ejecuta los builders, provisioners y post-processors en el orden definido. También se puede especificar un archivo específico: packer build ubuntu.pkr.hcl.


P: Escribe el comando para construir una imagen con Packer pasando la variable iso_url con valor ubuntu.iso. <input type=“text” class=“fill-blank” data-answer=“packer build -var “iso_url=ubuntu.iso” .” data-alt=“packer build -var ‘iso_url=ubuntu.iso’ .” placeholder=”$ escribe aqui…”>

R: packer build -var “iso_url=ubuntu.iso” .. La opción -var permite pasar variables al template durante la construcción. Para múltiples variables, se pueden usar varios -var o un archivo de variables con -var-file=variables.pkrvars.hcl. Las variables definidas en la línea de comandos tienen prioridad sobre las del archivo.


P: Escribe el comando para formatear todos los archivos HCL de Packer en el directorio actual.

R: packer fmt .. packer fmt . reformatea los archivos .pkr.hcl del directorio actual siguiendo el estilo canónico de HCL. Es similar a terraform fmt y se recomienda ejecutarlo antes de commits para mantener un formato consistente. Muestra los archivos que fueron modificados.


P: Escribe el comando para inspeccionar un template de Packer y ver sus componentes (sources, variables, builds).

R: packer inspect .. packer inspect muestra un resumen del template: las variables definidas con sus valores por defecto, los sources (builders) configurados y los builds definidos. Es útil para documentar y verificar la estructura de un template sin ejecutar la construcción.


P: Escribe el comando para validar la sintaxis de un template de Packer llamado ubuntu.pkr.hcl.

R: packer validate ubuntu.pkr.hcl. packer validate verifica que el template es sintácticamente correcto, que todas las variables requeridas están definidas y que las configuraciones de builders, provisioners y post-processors son válidas. No inicia ninguna construcción ni accede a APIs externas.


P: Tip de examen: HCL2 es el formato actual de Packer (desde v1.7+). El formato JSON antiguo sigue…

R: HCL2 es el formato actual de Packer (desde v1.7+). El formato JSON antiguo sigue siendo soportado pero HCL2 es el recomendado. Los archivos usan la extensión .pkr.hcl.


P: Tip de examen: El file provisioner sube archivos a la imagen durante la construcción. Para move…

R: El file provisioner sube archivos a la imagen durante la construcción. Para moverlos a rutas protegidas (como /etc/), se sube a /tmp/ primero y luego se mueve con un shell provisioner usando sudo.


P: Tip de examen: Packer puede construir imágenes para múltiples plataformas en paralelo desde un …

R: Packer puede construir imágenes para múltiples plataformas en paralelo desde un único template. Esto garantiza que todas las imágenes sean idénticas independientemente del hipervisor o cloud.


P: Que es/son Introducción?

R: Packer es una herramienta de HashiCorp para crear imágenes de máquinas idénticas para múltiples plataformas desde una única configuración. Permite automatizar la creación de imágenes para QEMU/KVM, Vir


P: Que es/son Formato de Template HCL2?

R: Packer usa HCL2 (HashiCorp Configuration Language v2) como formato de template moderno (reemplazó al formato JSON anterior).


P: Que es/son Trampas del examen?

R: > Errores comunes y distinciones criticas que LPI suele evaluar en este subtema: