Guía de tecnologías

Instalar Chef Server en Ubuntu 17.04 (Zesty Zapus)

7 min read DevOps Actualizado 08 Oct 2025
Instalar Chef Server en Ubuntu 17.04
Instalar Chef Server en Ubuntu 17.04

Introducción

Chef es una herramienta libre y de código abierto para la gestión de configuración. Está escrita en Ruby y Erlang y se integra con plataformas en la nube como AWS, OpenStack o Rackspace para crear y gestionar servidores automáticamente. Cuando una organización crece y aumenta el número de nodos, resulta impracticable que un administrador gestione cada equipo de forma manual; Chef permite centralizar esa gestión desde un servidor Chef.

En este tutorial instalaremos Chef Server en Ubuntu 17.04 (Zesty Zapus) y cubriremos las tareas adicionales necesarias para que el servidor quede listo para gestionar nodos y usuarios.

Importante: este documento asume que vas a instalar Chef Server autohospedado (on-premise) en Ubuntu 17.04. Si prefieres un servicio gestionado, considera Hosted Chef u otras soluciones de configuración como Ansible Tower.

Prerrequisitos

  • Una instalación mínima de Ubuntu 17.04 (Zesty Zapus).
  • Privilegios de root. Este guía está escrita como usuario root; si usas sudo, ejecuta sudo -i para trabajar como root.
  • Un nombre de dominio apuntando al servidor (FQDN). Chef recomienda un nombre de host resoluble.
  • Conexión a Internet para descargar paquetes.

Nota: reemplaza ejemplos de IP y nombres por valores reales de tu entorno.

Resumen de objetivos técnicos

  • Actualizar el sistema base y paquetes.
  • Establecer un FQDN resoluble y configurarlo en /etc/hostname y /etc/hosts.
  • Sincronizar el reloj con NTP (requisito para Chef).
  • Descargar e instalar el paquete .deb de Chef Server.
  • Ejecutar chef-server-ctl reconfigure y verificar servicios.
  • Instalar y configurar la interfaz web (Chef Manage) y complementos (Reporting, Push Jobs).
  • Crear usuario administrador y organización, exportar claves RSA.

Actualizar sistema base

Antes de instalar paquetes, actualiza repositorios y paquetes:

apt update && apt -y upgrade

Es buena práctica hacerlo tras iniciar la máquina y antes de cambios importantes.

Actualizar nombre del host

Chef exige un nombre de host resoluble (FQDN). Por ejemplo: chef.tudominio.com.

Para establecer el nombre temporalmente:

hostname 'chef.tudominio.com'

Y para hacerlo persistente:

echo "chef.tudominio.com" | tee /etc/hostname

Añade la entrada en /etc/hosts para que el FQDN resuelva localmente:

echo "192.0.2.10 chef.tudominio.com chef" >> /etc/hosts

Sustituye 192.0.2.10 por la IP pública/privada correspondiente y chef.tudominio.com por tu dominio.

Configurar NTP (sincronización horaria)

Chef es sensible a cambios de reloj; la sincronización NTP es obligatoria. NTP usa UDP/123.

Instala NTP:

apt install ntp

Inicia y habilita el servicio:

systemctl start ntp
systemctl enable ntp

Verifica la sincronización:

ntpq -p

Salida esperada (ejemplo):

root@chef:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
*chobi.paina.net 131.113.192.40   2 u   26   64   17    1.280   -1.852   1.046

Si ntpq no muestra servidores o el estado no contiene un asterisco (*), espera unos minutos o revisa reglas de firewall que bloqueen UDP/123.

Descargar e instalar Chef Server

Descarga el paquete .deb adecuado. En el momento original del tutorial se usó la versión 12.15.8 para Ubuntu 16.04 en arquitectura amd64; comprueba la página de descargas de Chef para obtener la versión recomendada para tu entorno.

Ejemplo de descarga (ajusta la URL a la versión correcta):

wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb

Instala el paquete:

dpkg -i chef-server-*.deb

Configurar Chef Server

Una vez instalado, aplica la configuración inicial (crea certificados, configura servicios y bases de datos):

chef-server-ctl reconfigure

Este proceso toma varios minutos. Al finalizar deberías ver un mensaje similar a:

Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds
Chef Server Reconfigured!

Verifica el estado de los servicios:

chef-server-ctl status

Salida esperada (ejemplo):

root@chef:~# chef-server-ctl status
run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s
run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s
run: postgresql: (pid 5718) 93s; run: log: (pid 5745) 92s
run: rabbitmq: (pid 5239) 101s; run: log: (pid 5099) 105s

Si algún servicio no está en estado “run”, revisa los logs en /var/log/chef-server/ y ejecuta chef-server-ctl tail para ver salidas en tiempo real.

Instalar consola web de gestión (Chef Manage)

Chef Manage ofrece una interfaz gráfica para administrar data bags, atributos, run-lists, roles, entornos y cookbooks.

Instala el módulo:

chef-server-ctl install chef-manage
chef-server-ctl reconfigure
chef-manage-ctl reconfigure

Si prefieres aceptar la licencia automáticamente:

chef-manage-ctl reconfigure --accept-license

Crear administrador y organización

Crea un directorio para almacenar las claves RSA que se generarán:

mkdir -p ~/.chef

Crea un usuario administrador:

chef-server-ctl user-create admin "Chef Administrator" admin@example.com StrongPassword -f ~/.chef/admin.pem

Sustituye admin, nombres, correo y StrongPassword por tus valores. El archivo ~/.chef/admin.pem contendrá la clave privada RSA del usuario.

Crea una organización y asócialo al usuario administrador:

chef-server-ctl org-create my_org "My Organization" --association_user admin -f ~/.chef/my_org.pem

Sustituye my_org por el nombre corto de la organización y “My Organization” por el nombre completo.

Acceder a la consola web

Abre en tu navegador:

http://Your-Server-IP

O usa tu FQDN: http://chef.tudominio.com

Deberías ver la pantalla de inicio de sesión. Usa el usuario y contraseña creados anteriormente.

Pantalla de inicio de sesión de Chef

Imagen: pantalla de inicio de sesión de Chef mostrando campos de usuario y contraseña.

Después de iniciar sesión verás el panel de Chef Manage:

Panel de CHEF

Imagen: panel principal de Chef Manage con menú lateral y vista de nodos.

Instalar complementos opcionales (Reporting, Push Jobs)

Reporting (informes):

chef-server-ctl install opscode-reporting
chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test

Push Jobs (ejecución remota de tareas):

chef-server-ctl install opscode-push-jobs-server
chef-server-ctl reconfigure
opscode-push-jobs-server-ctl reconfigure

Tras instalar cada complemento, revisa los logs y ejecuta las pruebas que provean para confirmar que están operativos.

Solución de problemas común

  • Problema: chef-server-ctl reconfigure falla por falta de memoria. Solución: aumenta swap o memoria y vuelve a ejecutar.
  • Problema: NTP no sincroniza. Solución: revisa firewall (UDP/123) y configura servidores NTP en /etc/ntp.conf.
  • Problema: certificado o FQDN no coincide. Solución: asegura que el FQDN usado para instalar coincide con el nombre en /etc/hosts y el certificado.
  • Problema: permisos de archivos .pem. Solución: limita permisos: chmod 600 ~/.chef/*.pem

Importante: consulta /var/log/chef-server/ y /var/log/opscode/ para mensajes detallados.

Buenas prácticas de seguridad

  • Protege las claves privadas (.pem) con permisos restrictivos (chmod 600) y almacénalas en un lugar seguro.
  • Habilita HTTPS en nginx y usa certificados válidos (Let’s Encrypt o CA interna).
  • Restringe el acceso a puertos administrativos mediante firewall y VPN.
  • Aplica actualizaciones de seguridad periódicamente.
  • Realiza copias de seguridad de las bases de datos y de /var/opt/opscode/ regularmente.

Lista de verificación (Check-list) rápida

  • Sistema actualizado (apt update && apt -y upgrade).
  • FQDN configurado y resolvible.
  • NTP funcionando y sincronizado.
  • Chef Server paquete instalado.
  • chef-server-ctl reconfigure completado sin errores.
  • Usuario admin y organización creados; claves en ~/.chef/.
  • Chef Manage instalado y accesible.
  • Complementos necesarios instalados y probados.
  • HTTPS configurado y copias de seguridad programadas.

Mini playbook de operación diaria

  1. Verificar estado de servicios:
chef-server-ctl status
  1. Revisar colas y mensajes de errors:
chef-server-ctl tail
  1. Comprobar espacio en disco y base de datos:
df -h
sudo -u postgres psql -c "SELECT datname, pg_database_size(datname) FROM pg_database;"
  1. Ejecutar pruebas de reporting (si instalado):
opscode-reporting-ctl test

Decisión rápida — ¿Chef Server local o Hosted?

flowchart TD
  A[¿Necesitas control total del servidor?] -->|Sí| B[Chef Server autohospedado]
  A -->|No| C[Considera Chef Hosted u otra solución gestionada]
  B --> D[Preparar infraestructura: DNS, NTP, seguridad]
  C --> E[Evaluar coste operativo vs. control]

Alternativas y cuándo no usar Chef

  • Ansible: bueno para inventarios más simples y operaciones ad-hoc sin agentes.
  • Puppet: parecido a Chef, con modelo declarativo; elegir según experiencia del equipo.
  • SaltStack: rápido para eventos en tiempo real y orquestación.

Cuando no usar Chef: proyectos pequeños con pocos nodos donde la sobrecarga de servidor y claves no compensa; en esos casos, Ansible (sin agentes) puede ser mejor.

Criterios de aceptación

  • Chef Server responde en su FQDN por HTTP/HTTPS.
  • chef-server-ctl status muestra todos los servicios en run.
  • Usuario admin puede iniciar sesión en Chef Manage.
  • Las claves .pem se generaron y se guardaron en ~/.chef/ con permisos 600.

Glosario (una línea cada término)

  • FQDN: Nombre de dominio completamente calificado (por ejemplo, chef.tudominio.com).
  • NTP: Protocolo de sincronización horaria (Network Time Protocol).
  • .pem: Archivo que contiene una clave privada RSA en formato PEM.
  • reconfigure: Comando que aplica y reconstruye la configuración interna de Chef Server.

Notas de compatibilidad y migración

  • El paquete usado en este tutorial era para Ubuntu 16.04/amd64; verifica en packages.chef.io la versión compatible con tu versión de Ubuntu.
  • Para migrar a una versión más reciente de Chef o a otra versión de Ubuntu, planifica pruebas en un entorno no productivo y sigue la guía oficial de migración de Chef.

Conclusión

Hemos cubierto la instalación y configuración inicial de Chef Server en Ubuntu 17.04, incluyendo NTP, FQDN, instalación de paquetes, configuración de la consola web y complementos opcionales. Después de completar los pasos y la lista de verificación, tu servidor Chef debería estar listo para gestionar nodos y automatizar la configuración en tu infraestructura.

Resumen: actualiza el sistema, asegura el FQDN y la hora (NTP), instala el paquete .deb, ejecuta chef-server-ctl reconfigure, crea administrador y organización, y protege las claves y el acceso administrativo.

Recursos adicionales: visita la documentación oficial de Chef para guías de migración, prácticas de seguridad y detalles de integración con nubes públicas.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach