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