LINUX

Cómo instalar Chef Workstation / Server / Node en CentOS 7

Chef es una plataforma de automatización que configura y gestiona su infraestructura. Transforma la infraestructura en código. Es una herramienta de gestión de configuración basada en Ruby. Esta plataforma de automatización consta de una estación de trabajo Chef, un servidor Chef y clientes chef que son los nodos administrados por el servidor Chef. Todos los archivos de configuración de chef, recetas, libros de cocina, plantillas, etc. se crean y prueban en la estación de trabajo de Chef y se cargan en el servidor de Chef, luego los distribuye entre todos los nodos posibles registrados dentro de las organizaciones. Es un marco de automatización ideal para Ceph y OpenStack. No solo nos brinda un control total, sino que es muy fácil trabajar con él.

En este artículo, explico los pasos que seguí para implementar un entorno de automatización Chef en mis servidores CentOS 7.

Prerrequisitos

  • Se recomienda tener un nombre de host FQDN
  • Chef solo admite arquitectura de 64 bits
  • Se recomiendan configuraciones adecuadas de red / firewall / hosts

¿Cómo trabaja Chef?

procedimiento de trabajo

Chef consta de una estación de trabajo que está configurada para desarrollar recetas y libros de cocina. También está configurado para ejecutar el cuchillo y se sincroniza con el repositorio del chef para mantenerlo actualizado. Ayuda a configurar la política de la organización, incluida la definición de roles y entornos y garantizar que los datos críticos se almacenen en bolsas de datos. Una vez que estas recetas / libros de cocina se prueban en las estaciones de trabajo, podemos cargarlas en nuestro servidor Chef. El servidor Chef almacena estas recetas y las asigna a los nodos según sus requisitos. Básicamente, los nodos se comunican solo con el servidor del chef y toman instrucciones y recetas desde allí.

En mi configuración de demostración, tengo tres servidores, a saber

  1. chefserver.test20.com – Chef Server
  2. chefwork.test20.com – Chef Workstation
  3. chefnode.test20.com – Chef Node

Comencemos con la construcción de Workstation.

Configurar una estación de trabajo

En primer lugar, inicie sesión en nuestro servidor trabajo de chef luego descarga el Paquete de desarrollo de chef. Una vez que se descarga el paquete, podemos instalarlo usando el comando rpm.

root@chefwork ~]# wget https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
--2016-05-20 03:47:31-- https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 03:47:32-- https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 104.123.250.232
Connecting to akamai.bintray.com (akamai.bintray.com)|104.123.250.232|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 143927478 (137M) [application/octet-stream]
Saving to: ‘chefdk-0.14.25-1.el7.x86_64.rpm’

100%[====================================================================================================>] 14,39,27,478 2.52MB/s in 55s

2016-05-20 03:48:29 (2.49 MB/s) - ‘chefdk-0.14.25-1.el7.x86_64.rpm’ saved [143927478/143927478]

[root@chefwork ~]# rpm -ivh chefdk-0.14.25-1.el7.x86_64.rpm
warning: chefdk-0.14.25-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chefdk-0.14.25-1.el7 ################################# [100%]
Thank you for installing Chef Development Kit!

¿Qué es ChefDK?

El Kit de desarrollo de Chef contiene todo lo necesario para comenzar con Chef, junto con las herramientas esenciales para la administración de código.

  • Contiene una nueva herramienta de línea de comandos, «chef»
  • El administrador de dependencias de libros de cocina Berkshelf
  • El marco de pruebas de integración de Test Kitchen.
  • ChefSpec para probar la sintaxis del libro de cocina
  • Foodcritic, una herramienta para realizar análisis de código estático en libros de cocina.
  • También tiene todas las herramientas de Chef como Chef Client, Knife, Ohai y Chef Zero

Comencemos creando algunas recetas en la estación de trabajo y probémoslas localmente para asegurarnos de que funcionan.

Cree una carpeta llamada chef-repo en / root / y dentro de esa carpeta podemos crear nuestras recetas.

[root@chefwork ~]# mkdir chef-repo
[root@chefwork ~]# cd chef-repo

Creating a recipe called hello.rb.
[root@chefwork chef-repo]# vim hello.rb
[root@chefwork chef-repo]#
[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
content 'Welcome to Chef'
end

Esta receta hello.rb crea un archivo llamado / etc / motd con contenido «Bienvenidos al Chef». Esta receta hace uso del archivo de recursos para mejorar esta tarea. Ahora podemos ejecutar esta receta para comprobar su funcionamiento.

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action create (up to date)

Confirm the recipe execution:

[root@chefwork chef-repo]# cat /etc/motd
Welcome to Chef

Eliminando el archivo

Podemos modificar nuestro archivo de receta para eliminar el archivo creado y ejecutarlo usando el comando chef-apply como se muestra a continuación:

[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
action :delete
end

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action delete
- delete file /etc/motd

Instalar un paquete

Estamos modificando nuestro archivo de recetas para instalar el paquete httpd en nuestro servidor y copiar un archivo index.html a la raíz del documento predeterminado para confirmar la instalación. El paquete y los recursos del servicio se utilizan para implementar esto. La acción predeterminada para un recurso de paquete es la instalación, por lo que no es necesario especificar esa acción por separado.

[root@chefwork chef-conf]# cat hello.rb
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

file '/var/www/html/index.html' do
content 'Welcome to Apache in Chef'
end
[root@chefwork chef-conf]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
 * file[/var/www/html/index.html] action create (up to date)

La ejecución del comando describe claramente cada instancia en la receta. Instala el paquete Apache, habilita e inicia el servicio httpd en el servidor. Y crea un archivo index.html en la raíz del documento predeterminado con el contenido «Bienvenido a Apache en Chef». Entonces podemos verificarlo ejecutando la IP del servidor en el navegador.

welcomepage_httpd

Creación de libros de cocina

Ahora podemos crear nuestro primer libro de cocina, crear una carpeta llamada chef-repo en el directorio / root y ejecutar el comando «chef generate cookbook [cookbook name]»para generar nuestro recetario.

root@chefwork chef-repo]# mkdir cookbooks
[root@chefwork chef-repo]# cd cookbooks/
[root@chefwork cookbooks]# chef generate cookbook httpd_deploy
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::cookbook
* directory[/root/chef-repo/cookbook/httpd_deploy] action create
- create new directory /root/chef-repo/cookbook/httpd_deploy

estructura de archivo de libro de cocina

Esta es la estructura de archivos del libro de cocina creado, veamos el uso de estos archivos / carpetas dentro del libro de cocina uno por uno.

Berksfile : Es el archivo de configuración, que le dice principalmente a BerkShelf cuáles son las dependencias del libro de recetas, que se pueden especificar directamente dentro de este archivo o indirectamente a través de metadata.rb. También le dice a Berkshelf dónde debe buscar esas dependencias.

Chefignore : Le dice a Chef qué archivos deben ignorarse al cargar un libro de cocina en el servidor de Chef.

metadata.rb : Contiene metainformación sobre su libro de cocina, como el nombre, los contactos o la descripción. También puede indicar las dependencias del libro de cocina.

README.md : Contiene un punto de entrada de documentación para el repositorio.

Recetas : Contiene las recetas del libro de cocina. Comienza con la ejecución del archivo default.rb.

default.rb : El formato de receta predeterminado.

especificaciones : Almacenará los casos de prueba unitarios de sus bibliotecas.

prueba : Almacenará los casos de prueba unitarios de sus recetas.

Creando una plantilla

A continuación, crearemos un archivo de plantilla para nosotros. Anteriormente, creamos un archivo con algunos contenidos, pero que no puede encajar con nuestras recetas y estructuras de libros de cocina. así que veamos cómo podemos crear una plantilla.

[root@chefwork cookbook]# chef generate template httpd_deploy index.html
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::template
* directory[./httpd_deploy/templates/default] action create
- create new directory ./httpd_deploy/templates/default
* template[./httpd_deploy/templates/default/index.html.erb] action create
- create new file ./httpd_deploy/templates/default/index.html.erb
- update content in file ./httpd_deploy/templates/default/index.html.erb from none to e3b0c4
(diff output suppressed by config)


plantilla

Ahora, si ve la estructura de archivos de nuestro libro de recetas, hay una carpeta creada con la plantilla de nombre con index.html.erb expediente. Podemos editar nuestro archivo de plantilla index.html.erb y agregarlo a nuestra receta como se muestra a continuación:

root@chefwork default]# cat index.html.erb
Welcome to Chef Apache Deployment
[root@chefwork default]# pwd
/root/chef-repo/cookbook/httpd_deploy/templates/default

Creando la receta con esta plantilla

[root@chefwork recipes]# pwd
/root/chef-repo/cookbook/httpd_deploy/recipes
[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: httpd_deploy
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

Ahora regrese a nuestra carpeta chef-repo y ejecute / pruebe nuestra receta en nuestra estación de trabajo.

[root@chefwork chef-repo]# chef-client --local-mode --runlist 'recipe[httpd_deploy]'
[2016-05-20T05:44:40+00:00] WARN: No config file found or specified on command line, using command line options.
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["httpd_deploy"]
Synchronizing Cookbooks:
- httpd_deploy (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 3 resources
Recipe: httpd_deploy::default
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
* template[/var/www/html/index.html] action create
 - update content in file /var/www/html/index.html from 152204 to 748cbd
 --- /var/www/html/index.html 2016-05-20 04:18:38.553231745 +0000
 +++ /var/www/html/.chef-index.html20160520-20425-1bez4qs 2016-05-20 05:44:47.344848833 +0000
 @@ -1,2 +1,2 @@
 -Welcome to Apache in Chef
 +Welcome to Chef Apache Deployment

Running handlers:
Running handlers complete
Chef Client finished, 4/4 resources updated in 06 seconds

[root@chefwork chef-repo]# cat /var/www/html/index.html
Welcome to Chef Apache Deployment

De acuerdo con nuestra receta, Apache está instalado en nuestra estación de trabajo, el servicio se inicia y se habilita en el arranque. Y se ha creado un archivo de plantilla en nuestra raíz de documentos predeterminada.

Ahora hemos probado nuestra estación de trabajo. Es hora de configurar el servidor Chef.

Configuración del servidor Chef

En primer lugar, inicie sesión en nuestro servidor Chef «chefserver.test20.com» y descargue el paquete del servidor Chef compatible con nuestra versión de SO.

[root@chefserver ~]# wget https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
--2016-05-20 07:23:46-- https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 07:23:47-- https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 23.15.249.68
Connecting to akamai.bintray.com (akamai.bintray.com)|23.15.249.68|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 481817688 (459M) [application/octet-stream]
Saving to: ‘chef-server-core-12.6.0-1.el7.x86_64.rpm’

100%[====================================================================================================>] 48,18,17,688 2.90MB/s in 3m 53s

[root@chefserver ~]# rpm -ivh chef-server-core-12.6.0-1.el7.x86_64.rpm
warning: chef-server-core-12.6.0-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chef-server-core-12.6.0-1.el7 ################################# [100%]

Ahora nuestro servidor Chef está instalado. Pero necesitamos reconfigurar el servidor Chef para habilitar e iniciar todos los servicios que se componen en el servidor Chef. Podemos ejecutar este comando para reconfigurar.

root@chefserver ~]# chef-server-ctl reconfigure
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::default"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- runit (1.6.0)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
[2016-05-19T02:38:37+00:00] WARN: Chef::Provider::AptRepository already exists! Cannot create deprecation class for LWRP provider apt_repository from cookbook apt
Chef Client finished, 394/459 resources updated in 04 minutes 05 seconds
Chef Server Reconfigured!

Confirme el estado del servicio y sus pids ejecutando este comando.

[root@chefserver ~]# chef-server-ctl status
run: bookshelf: (pid 6140) 162s; run: log: (pid 6156) 162s
run: nginx: (pid 6051) 165s; run: log: (pid 6295) 156s
run: oc_bifrost: (pid 5987) 167s; run: log: (pid 6022) 167s
run: oc_id: (pid 6038) 165s; run: log: (pid 6042) 165s
run: opscode-erchef: (pid 6226) 159s; run: log: (pid 6214) 161s
run: opscode-expander: (pid 6102) 162s; run: log: (pid 6133) 162s
run: opscode-solr4: (pid 6067) 164s; run: log: (pid 6095) 163s
run: postgresql: (pid 5918) 168s; run: log: (pid 5960) 168s
run: rabbitmq: (pid 5876) 168s; run: log: (pid 5869) 169s
run: redis_lb: (pid 5795) 290s; run: log: (pid 6280) 156s

¡¡Viva!! Nuestro Chef Server está listo :). Ahora podemos instalar la consola de administración para obtener una interfaz web para administrar nuestro servidor Chef.

Instalación de Management Console para Chef Server

Podemos instalar la consola de administración simplemente ejecutando este comando «chef-server-ctl instalar chef-manage «del servidor del chef.

[root@chefserver ~]# chef-server-ctl install chef-manage
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::add_ons_wrapper"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- runit (1.6.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: private-chef::add_ons_wrapper
* ruby_block[addon_install_notification_chef-manage] action nothing (skipped due to action :nothing)
* remote_file[/var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm] action create
- create new file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm
- update content in file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm from none to 098cc4
(file sizes exceed 10000000 bytes, diff output suppressed)
* ruby_block[locate_addon_package_chef-manage] action run
- execute the ruby block locate_addon_package_chef-manage
* yum_package[chef-manage] action install
- install version 2.3.0-1.el7 of package chef-manage
* ruby_block[addon_install_notification_chef-manage] action create
- execute the ruby block addon_install_notification_chef-manage

Running handlers:
-- Installed Add-On Package: chef-manage
- #<Class:0x00000006032b80>::AddonInstallHandler
Running handlers complete
Chef Client finished, 4/5 resources updated in 02 minutes 39 seconds

Después de instalar la consola de administración, necesitamos reconfigurar el servidor chef para reiniciar el servidor chef y sus servicios para actualizar estos cambios.

[root@chefserver ~]# opscode-manage-ctl reconfigure
To use this software, you must agree to the terms of the software license agreement.
Press any key to continue.
Type 'yes' to accept the software license agreement, or anything else to cancel.
yes
Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["omnibus-chef-manage::default"]
Synchronizing Cookbooks:
- omnibus-chef-manage
- chef-server-ingredient
- enterprise
Recipe: omnibus-chef-manage::default
* private_chef_addon[chef-manage] action create (up to date)
Recipe: omnibus-chef-manage::config
Running handlers:
Running handlers complete
Chef Client finished, 62/79 resources updated in 44.764229437 seconds
chef-manage Reconfigured!

[root@chefserver ~]# chef-server-ctl reconfigure

Ahora que nuestra consola de administración está lista, necesitamos configurar nuestro usuario administrador para administrar nuestro Chef Server.

Creación de usuario administrador / organización

Creé el usuario administrador llamado chefadmin con una organización linox en mi servidor de chef para administrarlo. Podemos crear el usuario usando el comando chef. chef-servidor-ctl crear-usuario y organización usando el comando chef-servidor-ctl org-create.

root@chefserver ~]# chef-server-ctl user-create chefadmin saheetha shameer saheetha@gmail.com 'chef123' --filename /root/.chef/chefadmin.pem
[root@chefserver ~]#

[root@chefserver .chef]# chef-server-ctl org-create linox Chef Linoxide --association_user chefadmin --filename /root/.chef/linoxvalidator.pem

Nuestras claves se guardan dentro de la carpeta /root/.chef carpeta. Necesitamos copiar estas claves del servidor Chef a la estación de trabajo para iniciar la comunicación entre nuestro servidor Chef y la estación de trabajo.

Copiar las claves

Estoy copiando mis claves de usuario y validador del servidor Chef a la estación de trabajo para mejorar la conexión entre los servidores.

[root@chefserver .chef]# scp chefadmin.pem root@139.162.35.39:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
root@139.162.35.39's password:
chefadmin.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

[root@chefserver .chef]# scp linoxvalidator.pem root@139.162.35.39:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
root@139.162.35.39's password:
linoxvalidator.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

Now login to our Management console for our Chef server with the user/password  "chefadmin" created.

consola chef_management

Le pedirá que cree una organización desde el Panel al registrarse. Simplemente crea uno diferente.

Descargue el kit de inicio para WorkStation

Elija cualquiera de su organización y descargue el Starter Kit desde Chef Server a nuestra estación de trabajo.

descarga de arranqueInicio

Después de descargar este kit. Muévalo a su estación de trabajo / carpeta raíz y extráigalo. Esto le proporciona un kit de inicio predeterminado para iniciar con su servidor Chef. Incluye repositorio de chef.

root@chefwork ~]# ls
chef-starter.zip hello.rb
[root@chefwork~]# unzip chef-starter.zip
Archive: chef-starter.zip
creating: chef-repo/cookbooks/
creating: chef-repo/cookbooks/starter/
creating: chef-repo/cookbooks/starter/recipes/
inflating: chef-repo/cookbooks/starter/recipes/default.rb
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/templates/
creating: chef-repo/cookbooks/starter/templates/default/
inflating: chef-repo/cookbooks/starter/templates/default/sample.erb
inflating: chef-repo/cookbooks/starter/metadata.rb
creating: chef-repo/cookbooks/starter/attributes/
inflating: chef-repo/cookbooks/starter/attributes/default.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/chefadmin.pem
inflating: chef-repo/.chef/ln_blog-validator.pem

chef-repo

Esta es la estructura de archivos del repositorio de Chef descargado. Contiene todas las estructuras de archivos necesarias para empezar.

Supermercado de libros de cocina

Los libros de cocina del chef están disponibles en el Supermercado de libros de cocina, podemos ir al Supermercado del chef aquí. Descargue los libros de cocina necesarios desde allí. Estoy descargando uno de los libros de cocina para instalar Apache desde allí.

root@chefwork chef-repo]# knife cookbook site download learn_chef_httpd
Downloading learn_chef_httpd from Supermarket at version 0.2.0 to /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz
Cookbook saved: /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz

Extract this cookbook inside the "cookbooks" folder.

[root@chefwork chef-repo]# tar -xvf learn_chef_httpd-0.2.0.tar.gz

aprender

Todos los archivos necesarios se crean automáticamente en este libro de recetas. No requerimos hacer ninguna modificación. Revisemos la descripción de nuestra receta dentro de nuestra carpeta de recetas.

[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: learn_chef_httpd
# Recipe:: default
#
# Copyright (C) 2014
#
#
#
package 'httpd'

service 'httpd' do
 action [:enable, :start]
end

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

service 'iptables' do
 action :stop
end
[root@chefwork recipes]#
[root@chefwork recipes]# pwd
/root/chef-repo/cookbooks/learn_chef_httpd/recipes
[root@chefwork recipes]#

Así que solo tenemos que cargar este libro de cocina en nuestro servidor Chef, ya que se ve perfecto.

Validación del servidor y la estación de trabajo de Connection b / w

Antes de cargar el libro de recetas, debemos verificar y confirmar la conexión entre nuestro servidor Chef y la estación de trabajo. En primer lugar, asegúrese de tener el archivo de configuración de Knife adecuado.

[root@chefwork .chef]# cat knife.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "chefadmin"
client_key "#{current_dir}/chefadmin.pem"
validation_client_name "linox-validator"
validation_key "#{current_dir}/linox-validator.pem"
chef_server_url "https://chefserver.test20.com:443/organizations/linox"

cookbook_path ["#{current_dir}/../cookbooks"]

Este archivo de configuración se encuentra en /root/chef-repo/.chef carpeta. Las porciones resaltadas son las principales cosas a cuidar. Ahora puede ejecutar este comando para verificar las conexiones.

root@chefwork .chef]# knife client list
ERROR: SSL Validation failure connecting to host: chefserver.test20.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://chefserver.test20.com/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

Puede ver un informe de error de SSL. Para rectificar este error, necesitamos buscar el certificado SSL para nuestro Chef Server y almacenarlo dentro de la carpeta /root/.chef/trusted_certs. Podemos hacer esto ejecutando este comando.

root@chefwork .chef]# knife ssl fetch
WARNING: Certificates from chefserver.test20.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.

Adding certificate for chefserver.test20.com in /root/chef-repo/.chef/trusted_certs/chefserver_test20_com.crt

Verifying the SSL:

[root@chefwork .chef]# knife ssl check
Connecting to host chefserver.test20.com:443
Successfully verified certificates from `chefserver.test20.com'

[root@chefwork .chef]# knife client list
chefnode
linox-validator
[root@chefwork .chef]# knife user list
chefadmin

Cargar el libro de cocina

Podemos cargar nuestro libro de cocina en nuestro servidor de chef desde la estación de trabajo usando el comando cuchillo como se muestra a continuación:

#cargar libro de cocina con cuchillo learn_chef_httpd

[root@chefwork cookbooks]# knife cookbook upload learn_chef_httpd
Uploading learn_chef_httpd [0.2.0]
Uploaded 1 cookbook.

Verifique el libro de recetas desde la consola de Chef Server Management.

libro de cocina

Agregar un nodo

Este es el paso final en la implementación de Chef. Hemos configurado una estación de trabajo, un servidor Chef y ahora necesitamos agregar nuestros clientes al servidor Chef para la automatización. Estoy agregando mi chefnode al servidor usando el comando de arranque de cuchillo como se muestra a continuación:

[root@chefwork cookbooks]# knife bootstrap 45.33.76.60 --ssh-user root --ssh-password dkfue@321 --node-name chefnode
Creating new client for chefnode
Creating new node for chefnode
Connecting to 45.33.76.60
45.33.76.60 -----> Installing Chef Omnibus (-v 12)
45.33.76.60 downloading https://omnitruck-direct.chef.io/chef/install.sh
45.33.76.60 to file /tmp/install.sh.5457/install.sh
45.33.76.60 trying wget...
45.33.76.60 el 7 x86_64
45.33.76.60 Getting information for chef stable 12 for el...
45.33.76.60 downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=12&p=el&pv=7&m=x86_64
45.33.76.60 to file /tmp/install.sh.5466/metadata.txt
45.33.76.60 trying wget...
45.33.76.60 sha1 4def83368a1349959fdaf0633c4d288d5ae229ce
45.33.76.60 sha256 6f00c7bdf96a3fb09494e51cd44f4c2e5696accd356fc6dc1175d49ad06fa39f
45.33.76.60 url https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 version 12.10.24
45.33.76.60 downloaded metadata file looks valid...
45.33.76.60 downloading https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 to file /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 trying wget...
45.33.76.60 Comparing checksum with sha256sum...
45.33.76.60 Installing chef 12
45.33.76.60 installing with rpm...
45.33.76.60 warning: /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
45.33.76.60 Preparing... ################################# [100%]
45.33.76.60 Updating / installing...
45.33.76.60 1:chef-12.10.24-1.el7 ################################# [100%]
45.33.76.60 Thank you for installing Chef!
45.33.76.60 Starting the first Chef Client run...
45.33.76.60 Starting Chef Client, version 12.10.24
45.33.76.60 resolving cookbooks for run list: []
45.33.76.60 Synchronizing Cookbooks:
45.33.76.60 Installing Cookbook Gems:
45.33.76.60 Compiling Cookbooks...
45.33.76.60 [2016-05-20T15:36:41+00:00] WARN: Node chefnode has an empty run list.
45.33.76.60 Converging 0 resources
45.33.76.60
45.33.76.60 Running handlers:
45.33.76.60 Running handlers complete
45.33.76.60 Chef Client finished, 0/0 resources updated in 08 seconds
[root@chefwork chef-repo]#

Este comando también inicializará la instalación del cliente Chef en el nodo Chef. Puede verificarlo desde la CLI en la estación de trabajo usando los comandos de cuchillo a continuación:

[root@chefwork chef-repo]# knife node list
chefnode

[root@chefwork chef-repo]# knife node show chefnode
Node Name: chefnode
Environment: _default
FQDN: chefnode.test20.com
IP: 45.33.76.60
Run List: recipe[learn_chef_httpd]
Roles: 
Recipes: 
Platform: centos 7.2.1511
Tags:

Verificándolo desde la consola de administración.

añadido nodechef

Podemos obtener más información sobre el nodo agregado seleccionando el nodo y viendo la sección Atributos.

detalles del nodo

Gestión de la lista de ejecución de nodos

Veamos cómo podemos agregar un libro de cocina al nodo y administrar su lista de ejecución desde el servidor Chef. Como ve en la captura de pantalla, puede hacer clic en el Comportamiento pestaña y seleccione la Editar lista de ejecución opción para administrar la lista de ejecución.

node_run

En las Recetas Disponibles puedes ver nuestras learn_chef_httpd receta, puede arrastrar eso desde los paquetes disponibles a la lista de ejecución actual y guardar la lista de ejecución.

drag_recipe

Ahora inicie sesión en su nodo y simplemente ejecute el comando chef-client para ejecutar su lista de ejecución.

root@chefnode ~]# chef-client
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["learn_chef_httpd"]
Synchronizing Cookbooks:
- learn_chef_httpd (0.2.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: learn_chef_httpd::default
* yum_package[httpd] action install

De manera similar, podemos agregar cualquier número de nodos a su Chef Server dependiendo de su configuración y hardware. Espero que este artículo le haya proporcionado los conocimientos básicos sobre la implementación de Chef. Recomendaría sus valiosos comentarios y sugerencias al respecto. Gracias por leer esto 🙂

¡Feliz Automatización con Chef!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar