Instalar Chef Server en Ubuntu 17.04 (Zesty Zapus)

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" [email protected] 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.
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:
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
- Verificar estado de servicios:
chef-server-ctl status
- Revisar colas y mensajes de errors:
chef-server-ctl tail
- Comprobar espacio en disco y base de datos:
df -h
sudo -u postgres psql -c "SELECT datname, pg_database_size(datname) FROM pg_database;"
- 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.
Materiales similares

Retrasar elementos de inicio en Mac con DelayedLauncher

Crear y administrar cuenta de invitado en Mac

Descargar imágenes desde Google Docs

Chrome no se abre en Windows: soluciones rápidas
Recuperar el icono de Configuración en el menú Inicio
