GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar y configurar Chef Workstation en Linux

Chef es un software de automatización de infraestructura de TI, que puede usarse para administrar todos sus servidores y equipos de red en su organización .

Necesita una estación de trabajo de chef cuando desea interactuar con el servidor de chef o cualquier nodo físico (servidores, equipos de red, etc.) en su infraestructura.

En una estación de trabajo de chef, con varios comandos relacionados con el chef (por ejemplo, cuchillo), puede crear libros de cocina o crear recetas que se ejecutarán en los nodos individuales. También puede iniciar un nuevo nodo desde la estación de trabajo del chef.

Este tutorial explica cómo puede instalar y configurar la estación de trabajo Chef en un servidor Linux.

Descarga ChefDK

ChefDK son las siglas de Chef Development Kit. ChefDK está disponible para casi todas las plataformas, incluidas las distribuciones basadas en Debian, Ubuntu, distribuciones basadas en RedHat como CentOS, Mac OS X y Windows.

La versión estable actual de ChefDK es 0.11.2. Para el sistema basado en RHEL, está disponible tanto para la versión 6 como para la versión 7 (es decir, CentOS 6 y CentOS 7). La versión RPM empaquetada solo está disponible para la versión de 64 bits.

Descárguelo desde aquí o use la URL directa como se muestra a continuación.

Para CentOS 7, use lo siguiente:

cd ~
wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm

Para CentOS 6, use lo siguiente:

cd ~
wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm

Instalar ChefDK

Instale ChefDK utilizando el RPM que descargamos anteriormente.

# rpm -ivh chefdk-0.11.2-1.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:chefdk-0.11.2-1.el7              ################################# [100%]
Thank you for installing Chef Development Kit!

Esto instalará ChefDK en /opt/chefdk como se muestra a continuación.

# ls -l /opt/chefdk/
drwxr-xr-x. 2 root root  4096 Mar  3 13:50 bin
drwxr-xr-x. 7 root root    62 Mar  3 13:50 embedded
-rw-r--r--. 1 root root 13249 Feb 22 14:26 version-manifest.json
-rw-r--r--. 1 root root  8233 Feb 22 14:26 version-manifest.txt

Verificar la instalación de ChefDK

Ejecute la verificación de chef, que verificará todos los diferentes componentes que vienen con ChefDK para asegurarse de que todos funcionen correctamente sin ningún problema, como se muestra a continuación.

# chef verify
Running verification for component 'berkshelf'
Running verification for component 'test-kitchen'
Running verification for component 'tk-policyfile-provisioner'
Running verification for component 'chef-client'
Running verification for component 'chef-dk'
Running verification for component 'chef-provisioning'
Running verification for component 'chefspec'
Running verification for component 'generated-cookbooks-pass-chefspec'
Running verification for component 'rubocop'
Running verification for component 'fauxhai'
Running verification for component 'knife-spork'
Running verification for component 'kitchen-vagrant'
Running verification for component 'package installation'
Running verification for component 'openssl'
Running verification for component 'inspec'
.......
---------------------------------------------
Verification of component 'test-kitchen' succeeded.
Verification of component 'chef-dk' succeeded.
Verification of component 'chefspec' succeeded.
Verification of component 'rubocop' succeeded.
Verification of component 'knife-spork' succeeded.
Verification of component 'openssl' succeeded.
Verification of component 'berkshelf' succeeded.
Verification of component 'chef-client' succeeded.
Verification of component 'fauxhai' succeeded.
Verification of component 'inspec' succeeded.
Verification of component 'tk-policyfile-provisioner' succeeded.
Verification of component 'kitchen-vagrant' succeeded.
Verification of component 'chef-provisioning' succeeded.
Verification of component 'package installation' succeeded.
Verification of component 'generated-cookbooks-pass-chefspec' succeeded.

El siguiente es un caso de ejemplo, donde la verificación del chef falló. Además, tenga en cuenta que Chef requiere Ruby, que viene integrado en ChefDK.

# chef verify
..
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout.rb:289:in `invalid!': Expected process to exit with [0], but received '1' (Mixlib::ShellOut::ShellCommandFailed)
---- Begin output of /usr/bin/ohai -v ----
STDOUT: 
STDERR: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'chef-config' (= 12.8.0) - did find: [chef-config-12.7.2] (Gem::LoadError)

Estamos recibiendo este mensaje de error:"No se pudo encontrar 'chef-config' (=12.8.0) - encontré:[chef-config-12.7.2] (Gem::LoadError)"

En el mensaje de error anterior, la configuración de chef que venía con ChefDK era 12.7.2, que es una versión anterior, que no era compatible con esta configuración. Entonces, en este caso, instalé la versión 12.8.0 de chef-config manualmente.

Después de eso, cuando ejecuté la verificación del chef, no dio el mensaje de error anterior.

Verificar la versión de ChefDK

Cuando ejecute el comando chef –version, mostrará el número de versión de ChefDK y todos los componentes que vienen con él, como se muestra a continuación.

# chef --version
Chef Development Kit Version: 0.11.2
chef-client version: 12.7.2
berks version: 4.2.0
kitchen version: 1.5.0

Configurar variables Chef ENV

También debe configurar las variables de entorno relacionadas con Chef. Por ejemplo:GEM_ROOT, GEM_HOME, GEM_PATH.

export GEM_ROOT="/opt/chefdk/embedded/lib/ruby/gems/2.1.0"
export GEM_HOME="/root/.chefdk/gem/ruby/2.1.0"
export GEM_PATH="/root/.chefdk/gem/ruby/2.1.0:/opt/chefdk/embedded/lib/ruby/gems/2.1.0"

Además, si ya tiene Ruby instalado en su sistema, debe actualizar su variable PATH en consecuencia para usar el ruby ​​que viene con chefDK, como se muestra a continuación.

export PATH="/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

El siguiente comando le mostrará todas las variables de entorno de Chef que deben configurarse.

chef shell-init bash

La forma rápida de configurar estas variables de entorno es agregar la línea anterior a su archivo .bash_profile como se muestra a continuación.

echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

Reglas de cortafuegos para acceder a Chef Manage

A continuación, debe descargar el kit de inicio de Chef desde su Chef Server que ya se está ejecutando.

Para acceder a la GUI de Chef Manage, en Chef Server, agregue las siguientes reglas de firewall para abrir los puertos apropiados en Chef Server.

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 443 -j ACCEPT

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 80 -j ACCEPT

firewall-cmd --direct  --add-rule ipv4 \
filter INPUT_direct 0 -i eth0 -p tcp \
 --dport 9683 -j ACCEPT

firewall-cmd --reload

Descargar el kit de inicio desde Chef Manage GUI

Inicie sesión en Chef Manage GUI y haga clic en la pestaña "Administración" en la parte superior. A continuación, seleccione la organización de la lista. En este ejemplo, el nombre de la organización es "ejemplo". Una vez seleccionada la organización, haga clic en "Kit de inicio" en el menú del lado izquierdo, como se muestra a continuación.

Cuando haga clic en "Descargar", recibirá este mensaje de advertencia:¿Está seguro?:Sus claves de usuario y organización se restablecerán. ¿Seguro que quieres hacer esto?.

Haga clic en Proceder. Esto descargará el archivo chef-starter.zip a su máquina local.

Descomprimir kit de inicio

Transfiera el archivo chef-starter.zip a la estación de trabajo Chef y descomprímalo en el directorio de inicio de la raíz como se muestra a continuación.

# cd ~
# unzip chef-starter.zip 
Archive:  chef-starter.zip
   creating: chef-repo/cookbooks/
   creating: chef-repo/cookbooks/starter/
   creating: chef-repo/cookbooks/starter/templates/
   creating: chef-repo/cookbooks/starter/templates/default/
  inflating: chef-repo/cookbooks/starter/templates/default/sample.erb  
   creating: chef-repo/cookbooks/starter/files/
   creating: chef-repo/cookbooks/starter/files/default/
  inflating: chef-repo/cookbooks/starter/files/default/sample.txt  
   creating: chef-repo/cookbooks/starter/recipes/
  inflating: chef-repo/cookbooks/starter/recipes/default.rb  
   creating: chef-repo/cookbooks/starter/attributes/
  inflating: chef-repo/cookbooks/starter/attributes/default.rb  
  inflating: chef-repo/cookbooks/starter/metadata.rb  
  inflating: chef-repo/cookbooks/chefignore  
  inflating: chef-repo/README.md     
  inflating: chef-repo/.gitignore    
   creating: chef-repo/.chef/
   creating: chef-repo/roles/
  inflating: chef-repo/.chef/knife.rb  
  inflating: chef-repo/roles/starter.rb  
  inflating: chef-repo/.chef/ramesh.pem  
  inflating: chef-repo/.chef/example-validator.pem

Si está configurando manualmente la carpeta chef-repo, debe crear los subdirectorios anteriores manualmente y copiar el archivo knife.rb, el archivo organization-validator.pem (por ejemplo:example-validator.pem) y nombre de usuario.pem (por ejemplo:ramesh.pem) a los directorios que se muestran arriba.

Obtenga el certificado SSL de Chef Server

En esta etapa, si ejecuta la lista de clientes de cuchillos, obtendrá este mensaje de error como se muestra a continuación:"ERROR:error de validación de SSL al conectarse al certificado de host, error de verificación"

# cd ~/chef-repo
# knife client list
ERROR: SSL Validation failure connecting to host: centos.example.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://centos.example.com/organizations/example/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

La verificación del certificado falló porque aún no tenemos el certificado SSL descargado del servidor de Chef.

Para esto, ejecute el siguiente comando "knife ssl fetch" como se muestra a continuación.

# cd ~/chef-repo
# knife ssl fetch
WARNING: Certificates from centos.example.com will be fetched and placed in your trusted_cert
directory (/root/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.

Esto descargará el certificado al siguiente directorio truster_certs.

# ls -l /root/chef-repo/.chef/trusted_certs
-rw-r--r--. 1 root root 1379 Mar 20 20:17 centos_example_com.crt

# cat /root/chef-repo/.chef/trusted_certs/centos_example_com.crt 
-----BEGIN CERTIFICATE-----
MIIDzDCCArSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJVUzEQ
MA4GA1UECgwHWW91Q29ycDETMBEGA1UECwwKT3BlcmF0aW9uczEbMBkGA1UEAwwS
ZXJhdGlvbnMxGzAZBgNVBAMMEmNlbnRvcy5leGFtcGxlLmNvbTCCASIwDQYJKoZI
..
..
WLyr2ORLMcck/OGsubabO/koMNTqhl2JJPECNiDJh06MeZ/2+BOwGZSpXDbw+vFE
NJAsLfsTzihGWZ58einMFA==
-----END CERTIFICATE-----

Verificación final de Chef Workstation

Si la estación de trabajo del chef funciona correctamente, cuando ejecute la "lista de clientes de cuchillos", se mostrarán todos los clientes que están conectados a esta estación de trabajo. Como lo acabamos de instalar, solo veremos el validador de su organización como se muestra a continuación.

# cd ~/chef-repo

# knife client list
example-validator

Si ejecuta este comando en una estación de trabajo de chef existente que ya tiene varios servidores conectados, verá una lista de todos los servidores administrados por el chef.

En el siguiente ejemplo, vemos 5 servidores conectados a esta estación de trabajo de chef.

# knife client list
example-validator
node1
node2
node3
node4
node5

Linux
  1. Cómo instalar Elasticsearch y Kibana en Linux

  2. Cómo instalar y probar Ansible en Linux

  3. Cómo instalar y usar Flatpak en Linux

  4. Cómo instalar y usar Traceroute en Linux

  5. Cómo instalar y configurar cPanel en un servidor Linux

Cómo instalar y usar el comando fd en Linux

Cómo instalar y usar Nu Shell en Linux

Cómo instalar Chef Workstation en CentOS 8

Cómo instalar y configurar Let's Encrypt (Certbot) en Linux

Cómo instalar y configurar la consola web de Cockpit en un sistema Linux

Cómo instalar y configurar contenedores LXC Linux en CentOS/RHEL/Ubuntu