Búsqueda de sitios web

Cómo instalar Chef Infra Server en Debian 11/Debian 10


La empresa de automatización CHEF existe desde 2008 y reúne a desarrolladores y administradores de sistemas. CHET Infa es una herramienta IaC (Infraestructura como código) de código abierto que facilita la administración, configuración y asignación de recursos en una red. Desde su primer lanzamiento, la base de fans de CHEF ha crecido enormemente, y empresas como Cheezburger, Facebook, Indiegogo y Etsy lo han adoptado.

CHEF infra, escrito en los lenguajes Ruby y Erlang tiene una arquitectura simple que consta de lo siguiente:

  • Estación de trabajo: esta es una computadora donde escribe los libros de cocina de Chef y los administra a sus nodos. Todas las configuraciones se desarrollan aquí.
  • Servidor Chef: actúa como centro para todos los nodos y libros de cocina. Todas las configuraciones se cargan aquí para su posterior desarrollo.
  • Nodos: son máquinas cliente administradas por el servidor Chef. Normalmente tienen instalado el cliente Chef.
  • Libros de cocina: contienen valores y datos sobre el estado deseado de un nodo. Contienen recursos, recetas, atributos, plantillas, bibliotecas, metadatos y todo lo que ayuda a concebir un sistema en funcionamiento.

A continuación se muestra un diagrama para ayudar a comprender la arquitectura CHEF.

El CHEF Infa es el preferido en automatización porque:

  • Alta disponibilidad: el servidor Chef Infa tiene alta disponibilidad con tolerancia a fallas, resultados de búsqueda inmediatos y consistentes y datos precisos en tiempo real sobre su infraestructura.
  • Consola de gestión gráfica para Chef Infra Server que facilita la administración.
  • Cumplimiento: Chef Automate crea informes personalizables que identifican problemas de cumplimiento, riesgos de seguridad y software obsoleto.
  • Taxonomía incorporada para todos los recursos básicos necesarios en un sistema, así como un mecanismo definido para ampliar esta taxonomía utilizando el lenguaje Ruby.

Si sigue esta guía hasta el final, obtendrá los conocimientos necesarios sobre cómo instalar el servidor, la estación de trabajo y el cliente Chef Infra en Debian 11/Debian 10.

Empezando

Para esta guía, asegúrese de tener lo siguiente:

  • Acceso Sudo a su servidor.
  • Un nombre de host configurado en su sistema
  • 3 servidores Debian 11/Debian 10

Los 3 servidores cumplirán las siguientes tareas:

Server IP Address Hostname
Chef Server 192.168.205.4 chef-server.computingforgeeks.com
Chef Workstation 192.168.205.14 workstation.computingforgeeks.com
Chef Client 192.168.205.24 chef-client. computingforgeeks.com

Configure el nombre de host en su servidor como se muestra a continuación.

##On Chef Server
sudo hostnamectl set-hostname chef-server.computingforgeeks.com --static

Si no tiene un nombre de dominio válido, agréguelo a la lista de hosts conocidos como se muestra a continuación.

  • En los 3 servidores
$ sudo vi /etc/hosts
192.168.205.4 chef-server.computingforgeeks.com chefserver

Ahora instale las dependencias requeridas.

sudo apt -y install git vim wget curl bash-completion
sudo apt update && sudo apt upgrade
sudo reboot

Paso 1: configurar la sincronización horaria NTP

El servidor Chef Infa es sensible a las desviaciones del reloj y requiere que conectemos nuestro sistema Debian al Protocolo de hora de red (NTP)

Comience instalando el paquete Chrony.

sudo apt -y install chrony

Configure su zona horaria local.

sudo timedatectl set-timezone Africa/Nairobi

Ahora configure la lista de grupos. Por ejemplo, para Kenia, utilice:

$ sudo vim /etc/chrony/chrony.conf
# pool 2.pool.ntp.org iburst  //Comment out this line
server 0.ke.pool.ntp.org
server 1.africa.pool.ntp.org
server 3.africa.pool.ntp.org

# Allow NTP client access from local network.
allow 192.168.205.0/24 

Obtenga más grupos desde la página del proyecto NTP Pool

Configure la sincronización NTP.

sudo timedatectl set-ntp true

Aplicar los cambios realizados.

sudo systemctl restart chrony

Se le pedirá que permita NTP a través del firewall.

sudo ufw allow ntp

Reinicie el servicio chronyd.

sudo systemctl restart chronyd

Paso 2: instale Chef Infra Server en Debian 11/Debian 10

Descargue el último paquete de Chef Infra Server desde la página de descargas de Chef Infra Server. También utilizando el enlace de descarga, puede extraer el paquete como se muestra a continuación.

VERSION="14.12.21"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/20.04/chef-server-core_${VERSION}-1_amd64.deb

Instale el paquete descargado.

sudo apt install ./chef-server-core_${VERSION}-1_amd64.deb

Salida de muestra:

Selecting previously unselected package chef-server-core.
(Reading database ... 142930 files and directories currently installed.)
Preparing to unpack chef-server-core_14.11.36-1_amd64.deb ...
Unpacking chef-server-core (14.11.36-1) ...
Setting up chef-server-core (14.11.36-1) ...
Thank you for installing Chef Infra Server!

Run 'chef-server-ctl reconfigure' to configure your Chef Infra Server

For more information on getting started see https://docs.chef.io/server/

Una vez que se complete la instalación, reconfigure su servidor Chef.

sudo chef-server-ctl reconfigure

Proceda como se indica a continuación.

Documentation: https://docs.chef.io/server/
Patents:       https://www.chef.io/patents

+---------------------------------------------+
            Chef License Acceptance

Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/

Licenses that need accepting:
  * Chef Infra Server
  * Chef Infra Client
  * Chef InSpec

Do you accept the 3 product licenses (yes/no)?

> yes
......
Running handlers:
Running handlers complete
Chef Infra Client finished, 409/858 resources updated in 04 minutes 00 seconds
Chef Infra Server Reconfigured!

Ahora verifique el estado de los componentes de Chef Server.

$ sudo chef-server-ctl status
run: bookshelf: (pid 19850) 32s; run: log: (pid 19358) 184s
run: elasticsearch: (pid 19817) 33s; run: log: (pid 19169) 220s
run: nginx: (pid 19803) 33s; run: log: (pid 19626) 41s
run: oc_bifrost: (pid 19707) 34s; run: log: (pid 19059) 237s
run: oc_id: (pid 19800) 33s; run: log: (pid 19097) 226s
run: opscode-erchef: (pid 19934) 32s; run: log: (pid 19502) 179s
run: postgresql: (pid 19696) 34s; run: log: (pid 18554) 253s
run: redis_lb: (pid 19649) 35s; run: log: (pid 20085) 31s

Si tiene UFW habilitado, permita HTTP y HTTPS a través del firewall.

sudo ufw allow http
sudo ufw allow https

Paso 3: cree una cuenta de administrador y una organización

La cuenta de administrador garantiza la comunicación entre el servidor, las estaciones de trabajo y los nodos. La sintaxis utilizada es la siguiente:

chef-server-ctl user create USERNAME FIRST_NAME [MIDDLE_NAME] LAST_NAME EMAIL PASSWORD

Primero exportaremos las variables.

USERNAME="chefadmin"
FIRST_NAME="Chef"
LAST_NAME="Administrator"
EMAIL="[email "
PASSWORD="Passw0rd"
KEY_PATH="/root/chefadmin.pem"

Ahora ejecute el siguiente comando para crear un usuario administrador.

sudo chef-server-ctl user-create ${USERNAME} ${FIRST_NAME} ${LAST_NAME} ${EMAIL} ${PASSWORD} -f ${KEY_PATH}

Verificar la creación del usuario.

$ sudo chef-server-ctl user-list
chefadmin
pivotal

Continúe y cree una organización para agregar el usuario anterior.

Normalmente, la siguiente sintaxis se utiliza para crear una organización.

chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USERNAME --filename ORGANIZATION-validator.pem (options)

En el comando anterior recuerda:

  1. El nombre debe comenzar con una letra minúscula o un dígito
  2. El nombre completo debe comenzar con un carácter que no sea un espacio en blanco
  3. La opción –association_user asociará al usuario con el grupo de seguridad de administradores en el servidor Chef.
  4. La opción –filename guarda la clave privada RSA en la ruta especificada.
  5. Se generará una clave privada RSA automáticamente. Esta es la clave del validador del chef y debe guardarse en un lugar seguro.

Para este caso, mi comando será el siguiente.

sudo chef-server-ctl org-create computingforgeeks 'computingforgeeks, Inc.' \
--association_user chefadmin \
--filename /root/computingforgeeks-validator.pem

Ver la lista de organizaciones.

$ sudo chef-server-ctl org-list
computingforgeeks

También puede verificar si las claves RSA para el usuario y la organización están disponibles.

$ sudo find /root -name "*.pem"
/root/chefadmin.pem
/root/computingforgeeks-validator.pem

Paso 4: instalar y configurar la estación de trabajo Chef.

Chef Workstation se utiliza para desarrollar configuraciones y luego enviarlas al servidor Chef.

Se instala descargando primero el paquete más reciente desde la página de descargas de Chef Workstation.

Alternativamente, identifique la última versión y descárguela con Wget.

#On Debian 11
VERSION="22.1.745"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb

#On Debian 10
VERSION="22.1.745"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/10/chef-workstation_${VERSION}-1_amd64.deb

Instale el paquete usando el comando:

sudo dpkg -i chef-workstation_${VERSION}-1_amd64.deb

Salida de muestra:

Selecting previously unselected package chef-workstation.
(Reading database ... 141880 files and directories currently installed.)
Preparing to unpack chef-workstation_22.1.745-1_amd64.deb ...
Unpacking chef-workstation (22.1.745-1) ...
Setting up chef-workstation (22.1.745-1) ...

The Chef Workstation App is available.

Launch the App by running 'chef-workstation-app'.
The App will then be available in the system tray.

Thank you for installing Chef Workstation!
You can find some tips on getting started at https://docs.chef.io/workstation/getting_started/

Verifique la instalación.

$ chef --version
Chef Workstation version: 22.1.745
Chef InSpec version: 4.52.9
Chef CLI version: 5.5.0
Chef Habitat version: 1.6.420
Test Kitchen version: 3.2.2
Cookstyle version: 7.26.1
Chef Infra Client version: 17.9.26

El cuchillo también está instalado.

$ knife --version
Chef Infra Client: 17.9.26

Ahora genere un repositorio de Chef como se muestra a continuación.

$ chef generate repo chef-repo
+---------------------------------------------+
            Chef License Acceptance

Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/

Licenses that need accepting:
  * Chef Workstation
  * Chef Infra Client
  * Chef InSpec

Do you accept the 3 product licenses (yes/no)?

> yes

Persisting 3 product licenses...
 3 product licenses persisted.

+---------------------------------------------+
Generating Chef Infra repo chef-repo
Loading Chef InSpec profile files:
Loading Chef InSpec input files:
Loading Chef InSpec waiver files:
- Ensuring correct Chef Infra repo file content

Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.

Continúe y cree un directorio para almacenar las configuraciones de Knife:

mkdir ~/chef-repo/.chef
cd chef-repo

Cree un par de claves RSA.

$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/thor/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/thor/.ssh/id_rsa
Your public key has been saved in /home/thor/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:wv055J+g9F6BTODc53tS9P+OBvC4KGCDJa9pNla0PVQ thor@debian
The key's randomart image is:
+---[RSA 4096]----+
|        .        |
|       oEo       |
|       .o o . .  |
|  . o... o.+ . . |
|   * +o S ++o . .|
|  . B o. +..o+  .|
|   = o ...*.+.. .|
|  B   ...o.= +...|
| + .   ...o o...o|
+----[SHA256]-----+

Envía las claves a tu servidor Chef. Asegúrese de que se permita el inicio de sesión raíz.

$ ssh-copy-id root@192.168.205.4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/thor/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email 's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email '"
and check to make sure that only the key(s) you wanted were added.

Copie los archivos .pem del Chef Server

scp [email :/root/*.pem ~/chef-repo/.chef/

Ver las claves copiadas.

$ ls ~/chef-repo/.chef
chefadmin.pem  computingforgeeks-validator.pem

Generé un libro de cocina del chef.

$ chef generate cookbook chef-first-cookbook
Hyphens are discouraged in cookbook names as they may cause problems with custom resources. See https://docs.chef.io/workstation/ctl_chef/#chef-generate-cookbook for more information.
Generating cookbook chef-first-cookbook
Loading Chef InSpec profile files:
Loading Chef InSpec input files:
Loading Chef InSpec waiver files:
- Ensuring correct cookbook content
..........

Why not start by writing an InSpec test? Tests for the default recipe are stored at:

test/integration/default/default_test.rb

If you'd prefer to dive right in, the default recipe can be found at:

recipes/default.rb

Paso 5: configurar Knife y arrancar un nodo cliente.

Arrancar un nodo cliente implica instalar Chef Infra Client en el sistema cliente para que pueda realizarse la comunicación entre este y el servidor Chef.

Hay dos formas que se pueden utilizar para iniciar un Nodo cliente.

  1. Instalación desatendida: arranque desde el nodo sin necesidad de conectividad SSH o WinRM
  2. arranque del cuchillo: desde la estación de trabajo del Chef

Esta guía demuestra cómo arrancar un nodo cliente utilizando el método de arranque Knife.

Ahora, en el nodo Estación de trabajo, cree un archivo config.rb como se muestra a continuación.

vim ~/chef-repo/.chef/config.rb

Agregue el contenido a continuación reemplazándolo adecuadamente.

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'chefadmin'
client_key               "chefadmin.pem"
validation_client_name   'computingforgeeks-validator'
validation_key           "computingforgeeks-validator.pem"
chef_server_url          'https://chef-server.computingforgeeks.com/organizations/computingforgeeks'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

Recuerde reemplazar su servidor Chef y los detalles de su organización de manera adecuada. Guarde el archivo, luego proceda a copiar los certificados SSL.

$ cd ~/chef-repo
$ knife ssl fetch
WARNING: Certificates from chef-server.computingforgeeks.com will be fetched and placed in your trusted_cert
       directory (/home/thor/chef-repo/.chef/trusted_certs).
       
       Knife has no means to verify these are the correct certificates. You should
       verify the authenticity of these certificates after downloading.
Adding certificate for chef-server_computingforgeeks_com in /home/thor/chef-repo/.chef/trusted_certs/chef-server_computingforgeeks_com.crt

Verifique si config.rb está configurado.

$ knife client list
computingforgeeks-validator

Ahora inicie su nodo Chef Client; para este caso, la dirección IP es 192.168.205.24, así que proceda como se indica a continuación.

cd ~/chef-repo/.chef
knife bootstrap 192.168.205.24 -x root -P ***** --node-name chef-client-node1

Recuerde, el usuario root se utiliza para los privilegios elevados necesarios. Asegúrese de que el inicio de sesión raíz esté permitido en su nodo cliente Chef.

Proceda como se muestra.

$ knife bootstrap 192.168.205.24 -x root -P ***** --node-name chef-client-node1
-x/--winrm-user: This flag is deprecated. Use -U/--connection-user instead.
Connecting to 192.168.205.24 using ssh
The authenticity of host '192.168.205.24 ()' can't be established.
fingerprint is SHA256:5iGXeB0Fr2zfznkmmGv8ZDIL5SdHk6nXGKt7vSf1Ufg.

Are you sure you want to continue connecting
? (Y/N) y

El proceso de arranque ocurre de la siguiente manera:

Una vez completado, verifique si se ha agregado el nodo.

$ knife node list
chef-client-node1

También puede ver más información sobre el nodo como se muestra a continuación.

knife node show chef-client-node1

Salida de muestra:

Paso 6: (opcional) Instale Chef Manage.

Chef Manage ofrece una interfaz web donde puede administrar las tareas del servidor Chef. Se instala como se muestra a continuación.

En el servidor Chef, descargue el paquete Chef Manage desde la página de descargas de Chef Manage.

VER="3.2.43"
wget https://packages.chef.io/files/stable/chef-manage/${VER}/ubuntu/20.04/chef-manage_${VER}-1_amd64.deb

Instale el paquete como se muestra a continuación:

$ sudo dpkg -i chef-manage_${VER}-1_amd64.deb
Selecting previously unselected package chef-manage.
(Reading database ... 199475 files and directories currently installed.)
Preparing to unpack chef-manage_3.2.35-1_amd64.deb ...
Unpacking chef-manage (3.2.35-1) ...
Setting up chef-manage (3.2.35-1) ...

Thank you for installing the Chef Management Console add-on!

The next step in the process is to run:

chef-manage-ctl reconfigure

Vuelva a configurar el servidor Chef y los complementos como se muestra a continuación

sudo chef-server-ctl reconfigure 
sudo chef-manage-ctl reconfigure

Una vez completado, acceda a la interfaz de usuario web mediante la URL https://serverip/login. En la página de inicio de sesión, proporcione las credenciales para el usuario administrador creado en el paso 3.

Debería poder ver el panel de Chef con el nodo cliente agregado como se muestra a continuación.

Conclusión.

Esta guía le ha proporcionado los conocimientos básicos para empezar a utilizar Chef Infa. Espero que haya encontrado emocionante esta guía sobre cómo instalar Chef Infra Server en Debian 11/Debian 10.

Ver más:

  • Instale Chef Server y estación de trabajo en Ubuntu
  • Cómo instalar Chef Workstation en CentOS 8/RHEL 8
  • Cómo configurar Chef Infra Server en CentOS 8/RHEL 8
  • Los mejores libros para aprender la automatización de títeres y chefs