Lanzador Productos Bitnami Documentaciónimaxe CLI Blog Contacto

cloud-init y user-data: configura tus instancias en el arranque como un profesional

Una golden AMI resuelve lo estable; cloud-init resuelve lo que cambia. Dominar user-data y cloud-init es lo que te permite usar una misma imagen en mil escenarios sin rehornearla. Aquí tienes la guía práctica.

Portátil mostrando la actualización del sistema en una terminal
Portátil mostrando la actualización del sistema en una terminal Foto: Solijon Solayev · CC BY-SA 4.0 · Wikimedia Commons

cloud-init es el estándar de facto para inicializar instancias en la nube durante su primer arranque. Cuando lanzas una instancia y le pasas un script de user-data, es cloud-init quien lo interpreta y ejecuta: crea usuarios, escribe ficheros, instala paquetes, monta discos o arranca servicios.

La combinación ideal es clara: la golden AMI contiene lo que no cambia —sistema operativo, runtime, hardening— y user-data aporta lo que varía por entorno o por instancia: configuración, secretos inyectados, rol. Así reutilizas una sola imagen en muchos contextos.

Dos formas de escribir user-data

user-data admite varios formatos; los dos más habituales son el script de shell y el cloud-config.

  • Script de shell: empieza por #!/bin/bash. Simple y directo para tareas rápidas.
  • cloud-config: empieza por #cloud-config y usa YAML declarativo. Más limpio, legible e idempotente para configurar usuarios, paquetes, ficheros y comandos.

Ejemplo de cloud-config

Un #cloud-config típico declara secciones como packages: (paquetes a instalar), write_files: (ficheros de configuración), runcmd: (comandos finales) y users: (cuentas y claves). Al ser declarativo, es más fácil de revisar y mantener que un script largo.

Buenas prácticas

  • Mantén user-data pequeño: si crece demasiado, probablemente eso debería estar horneado en la AMI.
  • Idempotencia: diseña los comandos para que reejecutarlos no rompa nada.
  • Nunca pongas secretos en claro en user-data: es legible desde los metadatos de la instancia. Inyéctalos desde Secrets Manager, Parameter Store o Vault en tiempo de ejecución.
  • Protege el acceso a los metadatos: usa IMDSv2 para mitigar el robo de credenciales vía SSRF.
  • Registra y depura: los logs de cloud-init (/var/log/cloud-init-output.log) son tu mejor amigo cuando algo falla.

Baking o booting: dónde poner cada cosa

Va en la AMI (baking)Va en user-data (booting)
Sistema operativo y parchesConfiguración específica del entorno
Runtime, agentes y hardeningVariables y parámetros por instancia
Software estable y pesadoRegistro en el clúster y descubrimiento
Todo lo que tarda en instalarseInyección de secretos en runtime

Regla de oro: lo estable y lento se hornea; lo variable y ligero va en el arranque.

Errores comunes que cuestan horas

  • Meter en user-data lo que debería estar en la imagen, con arranques lentos y frágiles como resultado.
  • Exponer secretos en texto plano en los metadatos.
  • Suponer que user-data se reejecuta en cada arranque: por defecto solo corre en el primero.
  • No revisar los logs de cloud-init cuando la instancia «no hace lo que debería».

Preguntas frecuentes

¿user-data se ejecuta en cada reinicio?

Por defecto, solo en el primer arranque. Se puede configurar cloud-init para ejecutar ciertas partes en cada arranque, pero conviene hacerlo de forma consciente e idempotente.

¿Es seguro pasar contraseñas en user-data?

No. user-data es legible desde los metadatos de la instancia. Usa un gestor de secretos e inyéctalos en tiempo de ejecución, y protege los metadatos con IMDSv2.

¿cloud-init solo funciona en AWS?

No. cloud-init es multiplataforma y funciona en AWS, Azure, GCP y otros, lo que lo hace ideal para automatizar el arranque de forma portable.

En imaxe.cloud diseñamos imágenes pensadas para combinarse con cloud-init, de modo que una sola AMI te sirva en muchos escenarios.

cloud-inituser-dataec2bootstrappingimdsv2
IM

Equipo imaxe

Construimos y mantenemos las AMIs del catálogo. Cuando publicamos una versión, la usamos en producción antes que nadie.

Del catálogo

AMIs relacionadas con este artículo

Sigue leyendo

Artículos relacionados