Cómo instalar Chef Infra Server en Debian 12
Chef es un potente software de automatización en Debian Linux diseñado para gestionar y configurar entornos de servidores a gran escala. Facilita el despliegue, la configuración y la gestión de aplicaciones e infraestructuras mediante código, promoviendo los principios de la infraestructura como código (IaC). Chef utiliza un lenguaje específico de dominio (DSL) escrito en Ruby para definir «recetas» y «libros de cocina» que especifican cómo deben configurarse los servidores. Esto permite a los administradores de sistemas y a los equipos de DevOps automatizar tareas repetitivas, garantizar la coherencia entre entornos y escalar fácilmente la infraestructura. Chef admite una amplia gama de recursos e integraciones, lo que la convierte en una herramienta versátil para gestionar entornos complejos en Debian, Ubuntu Linux y otras plataformas.
En este tutorial, te mostraremos cómo instalar Chef Server y Chef Workstation en servidores Debian 12 paso a paso.
Requisitos previos
Para completar esta guía, asegúrate de que tienes lo siguiente:
- 3 servidores Debian 12.
- Un usuario no root con privilegios de administrador.
Configurar el FQDN
En este primer paso, configurarás el FQDN (Nombre de Dominio Completamente Cualificado) para el servidor Chef, la estación de trabajo Chef y el cliente.
Ejecuta el siguiente comando hostnamectl para configurar fqdn para cada servidor.
sudo hostnamectl set-hostname chef.hwdomain.io sudo hostnamectl set-hostname workstation.hwdomain.io sudo hostnamectl set-hostname client.hwdomain.io
Abre el archivo /etc/hosts en cada servidor utilizando el siguiente comando del editor nano.
sudo nano /etc/hosts
Introduce la siguiente configuración y asegúrate de cambiar la dirección IP detallada, el nombre de host y el fqdn con tu configuración.
192.168.5.15 chef.hwdomain.io chef 192.168.5.20 workstation.hwdomain.io workstation 192.168.5.21 client.hwdomain.io client
Guarda y cierra el archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para asegurarte de que cada fqdn apunta a la dirección IP correcta del servidor.
sudo hostname -f ping -c3 chef.hwdomain.io
Sincronizar la hora entre servidores
Tras configurar los FQDN, deberás asegurarte de que cada servidor tiene sincronizada la hora. En este caso, configurarás el servidor NTP en el Servidor Chef y configurarás la estación de trabajo y el cliente Chef para que se conecten a él.
Configurar Chrony en el servidor Chef
En el servidor Chef, ejecuta el siguiente comando para actualizar el índice de paquetes del repositorio e instalar el paquete Chrony.
sudo apt update sudo apt install chrony -y
Una vez instalado Chrony, abre el archivo /etc/chrony/chrony. conf utilizando el siguiente comando del editor nano.
sudo nano /etc/chrony/chrony.conf
Introduce la siguiente configuración para establecer el servidor NTP por defecto. Asegúrate de elegir la ubicación más cercana de tu servidor, consulta ntp.org para más detalles.
Además, configurarás Chrony dentro del servidor Chef como servidor NTP tanto para la estación de trabajo Chef como para los clientes.
pool 0.nl.pool.ntp.org iburst pool 1.nl.pool.ntp.org iburst pool 2.nl.pool.ntp.org iburst pool 3.nl.pool.ntp.org iburst
allow 192.168.5.0/24
Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando para configurar la zona horaria por defecto y habilitar NTP.
sudo timedatectl set-timezone Europe/Amsterdam sudo timedatectl set-ntp true
A continuación, reinicia el servicio chrony para aplicar los cambios.
sudo systemctl restart chrony
Por último, verifica la fuente NTP utilizando el siguiente comando.
chronyc sources
Deberías recibir una salida como la siguiente:
En la estación de trabajo Chef y en el cliente
Ahora pasa a la estación de trabajo Chef y a la máquina cliente. A continuación, ejecuta el siguiente comando para actualizar el repositorio e instalar Chrnoy en ambos servidores.
sudo apt update sudo apt install chrony -y
Después, modifica la configuración de Chrony /etc/chrony/chrony.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/chrony/chrony.conf
Comenta la fuente NTP por defecto para desactivarla, luego introduce la dirección IP del servidor Chef como servidor NTP como se indica a continuación.
# default chrony server 192.168.5.15 iburst
Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando para configurar la zona horaria por defecto y habilitar NTP.
sudo timedatectl set-timezone Europe/Amsterdam sudo timedatectl set-ntp true
A continuación, reinicia el servicio Chrony para aplicar los cambios.
sudo systemctl restart chrony
Por último, verifica las fuentes NTP tanto en la estación de trabajo Chef como en el cliente utilizando el siguiente comando.
chronyc sources
Deberías ver que la fuente NTP por defecto tanto para la estación de trabajo Chef como para el cliente es el servidor Chef, que tiene una dirección IP de 192.168.5.15.
Instalación y configuración del servidor Chef
Ahora que has configurado el FQDN y sincronizado las horas entre servidores, estás listo para instalar Chef. En primer lugar, instalarás y configurarás Chef Server.
Chef Server es un ecosistema central de Chef que conecta cada parte, por lo que primero debes configurarlo. En este caso, utilizaremos un Servidor Chef con 8 GB de RAM.
Instalar Chef Server mediante DEB
Dirígete al servidor Chef y ejecuta el siguiente comando para descargar el paquete del servidor Chef. En este ejemplo, utilizarás Chef 15.
VERSION="15.7.0" wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/22.04/chef-server-core_${VERSION}-1_amd64.deb
Ahora instala el servidor Chef mediante el archivo .deb utilizando el comando que aparece a continuación. La instalación tardará unos minutos.
sudo apt install ./chef-server-core_*.deb
Una vez finalizada la instalación, deberías obtener la confirmación«Gracias por instalar Chef Infra Server«.
A continuación, ejecuta el siguiente comando chef-server-ctl para reconfigurar la instalación de tu servidor Chef.
sudo chef-server-ctl reconfigure
Cuando se te pregunte, introduce Y para confirmar la licencia de Chef.
Comenzará la inicialización del servidor Chef. Una vez finalizada, deberías obtener una confirmación del tipo ‘Servidor ChefInfra Reconfigurado‘.
Configurar usuario y organización
Ahora que has reconfigurado el Servidor Chef, vas a configurar el usuario y la organización en tu instalación del Servidor Chef.
Crea un nuevo directorio ~/.chef utilizando el siguiente comando.
mkdir -p ~/.chef
A continuación, crea un nuevo usuario Chef utilizando el siguiente comando. En este ejemplo, crearemos un nuevo usuario alice con contraseña password y el certificado TLS se almacenará en ~/ .chef/alice.pem.
sudo chef-server-ctl user-create alice Alice Wonderland [email protected] 'password' --filename ~/.chef/alice.pem
Ahora crea una nueva organización utilizando el siguiente comando. Asegúrate de cambiar los detalles del nombre de la organización, el usuario asociado y la ruta del certificado TLS.
sudo chef-server-ctl org-create hworgz 'HW Corp, Inc.' --association_user alice --filename ~/.chef/hworgz-validator.pem
Una vez terminado todo, verifica la lista de usuario y organización en el servidor Chef utilizando el comando que aparece a continuación.
sudo chef-server-ctl user-list sudo chef-server-ctl org-list
Si todo va bien, deberías ver el Servidor Chef con el usuario alice y la organización hworgz como el siguiente.
Además, también puedes comprobar los certificados TLS generados utilizando el comando siguiente. Deberías ver los certificados alice.pem y hworgz-validator.pem.
ls ~/.chef/
Llegados a este punto, habrás finalizado la instalación del Servidor Chef.
Instalación y configuración de la estación de trabajo Chef
Tras instalar el Servidor Chef, instalarás la estación de trabajo Chef. La estación de trabajo Chef es un nodo que los administradores/usuarios utilizan para crear y probar libros de cocina y recetas.
En este ejemplo, instalarás la estación de trabajo Chef en un servidor Debian 12 con 2 GB de RAM.
Instalación de la estación de trabajo Chef mediante DEB
Dirígete a la estación de trabajo Chef y ejecuta el siguiente comando para descargar el paquete de la estación de trabajo Chef utilizando el comando wget que aparece a continuación. En este caso, instalarás Chef Workstation 23.
VERSION="23.7.1042" wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb
Una vez descargado, ejecuta el siguiente comando para instalar el paquete de la estación de trabajo Chef en tu sistema.
sudo apt install ./chef-workstation_*.deb
Cuando termine, deberías obtener la confirmación«Gracias por instalar Chef Workstation«.
Por último, ejecuta el siguiente comando para verificar la versión de Chef.
chef -v
La siguiente salida confirma que has instalado Chef 23 en tu servidor Debian.
Configurar Chef Workstation
Ahora que ya has instalado la estación de trabajo Chef, lo siguiente es configurar la instalación.
En primer lugar, genera una nueva clave SSH utilizando el siguiente comando. Introduce cuando se te pida una frase de contraseña para la clave.
ssh-keygen -t ed25519
Ahora ejecuta el siguiente comando para subir la clave al servidor Chef chef.hwdomain.io. Esto se utilizará para recuperar certificados TLS del servidor Chef a la estación de trabajo.
ssh-copy-id [email protected]
Introduce tu contraseña cuando se te pida.
A continuación, genera un nuevo repositorio de Chef utilizando el siguiente comando. En este ejemplo, crearás un nuevo repositorio Chef test-repo.
chef generate repo test-repo
Ahora crea un nuevo directorio ~/test-repo/.chef y entra en él.
mkdir ~/test-repo/.chef; cd ~/test-repo/.chef
Copia los certificados TLS del servidor Chef a la estación de trabajo en el directorio actual utilizando el siguiente comando.
scp [email protected]:~/.chef/*.pem .
Una vez terminado, comprueba la lista de archivos dentro del directorio ~/test-repo/.chef.
ls ~/test-repo/.chef/
Asegúrate de que tus certificados TLS están disponibles en el servidor de la estación de trabajo Chef.
Configurar la Utilidad Cuchillo – Interfaz con el Servidor Chef
Ahora que has instalado la estación de trabajo Chef, vas a configurar Knife en tu estación de trabajo Chef. Knife es una herramienta de línea de comandos para comunicarte con el servidor Chef que te permite gestionar nodos, libros de recetas, recetas, roles y entornos.
En la máquina de la estación de trabajo Chef, desplázate al directorio ~/test-repo/.chef y crea un nuevo archivo knife.rb utilizando el siguiente comando del editor nano.
cd ~/test-repo/.chef nano knife.rb
Inserta el siguiente script Ruby y asegúrate de cambiar los detalles del usuario, las organizaciones, los archivos de certificado TLS y la URL del servidor Chef.
current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name 'alice' client_key "alice.pem" validation_client_name 'hworgz-validator' validation_key "hworgz-validator.pem" chef_server_url 'https://chef.hwdomain.io/organizations/hworgz' cache_type 'BasicFile' cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks"]
Guarda y cierra el archivo cuando hayas terminado.
Ahora dirígete al directorio ~/test-repo y recupera los certificados del Servidor Chef utilizando el siguiente comando knife.
cd ~/test-repo knife ssl fetch
Una vez terminado, deberías obtener la siguiente salida.
A partir de ahora, puedes utilizar el cuchillo para comunicarte con el Servidor Chef y arrancar la máquina cliente.
knife client list
Boostraping Cliente/Nodo desde la Estación de Trabajo Chef
En la siguiente sección, aprenderás a utilizar Knife para arrancar automáticamente el nodo 192.168.5.21 mediante SSH desde la estación de trabajo Chef.
En primer lugar, desplázate al directorio ~/test-repo/.chef.
cd ~/test-repo/.chef
Ejecuta el siguiente comando knife para arrancar el cliente 192 .168.5.21. Asegúrate de cambiar el usuario root y la contraseña password con tus datos.
En este ejemplo, añadirás el nodo 192.168.5.21 y lo nombrarás cliente.
knife bootstrap 192.168.5.21 -U root -P password --node-name client
Introduce Y para continuar y seguir con el proceso.
Una vez finalizado, deberías obtener la confirmación«Fase Infra completada«.
Ahora comprueba la lista de nodos disponibles en el entorno Chef utilizando el siguiente comando. Si todo va bien, deberías ver que el nodo cliente está disponible.
knife node list
A continuación, verifica los detalles del nodo cliente utilizando el comando knife que aparece a continuación.
knife node show client
En la siguiente salida, puedes ver el nodo cliente máquina Debian 12 con FQDN cliente.hwdomain.io.
Por último, ahora puedes ejecutar comandos arbitrarios en el nodo cliente mediante el comando knife que aparece a continuación.
knife ssh "client" "whoami;top" -u alice
Introduce la contraseña del usuario Chef alice cuando se te solicite. Si el comando tiene éxito, deberías obtener lo siguiente.
Conclusión
¡Enhorabuena! Ya has completado la instalación del servidor y la estación de trabajo Chef en servidores Debian 12. También has aprendido a utilizar la herramienta de línea de comandos Knife para arrancar nodos cliente mediante SSH. Ahora. puedes añadir nuevos nodos cliente y configurar libros de cocina y recetas para instalar aplicaciones.