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

configurar fqdn

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

instalar crono

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:

configurar crono

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.

configurar cliente de estación de trabajo chrony chef

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«.

instalar servidor chef

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.

reconfigurar el servidor chef

Comenzará la inicialización del servidor Chef. Una vez finalizada, deberías obtener una confirmación del tipo ‘Servidor ChefInfra Reconfigurado‘.

finalizada la reconfiguración del servidor chef

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.

crear usuario y orgz

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«.

instalar estación de trabajo chef

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.

comprueba la versión de chef

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

generar clave ssh

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.

clave de carga

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.

descargar clave mediante scp

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.

cuchillo de preparación

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.

nodo de arranque

Una vez finalizado, deberías obtener la confirmación«Fase Infra completada«.

bootstrapping finalizado

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.

nodo de control de cuchillas

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.

ejecutar comando Linux mediante chef a cliente

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.

También te podría gustar...