GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cree libros de cocina de Chef simples para administrar su infraestructura CentOS / RHEL

Los libros de recetas son uno de los componentes importantes del sistema de gestión de configuración de Chef; nos permite configurar y realizar tareas especializadas (expulsar los cambios) en nodos de chef remotos.

En esta guía, crearemos libros de recetas y luego le diremos a Chef que los impulse, es decir, ejecutará los pasos descritos en el libro de recetas en los nodos.

Esta guía asume que tiene un entorno de Chef en funcionamiento que incluye un servidor, una estación de trabajo y al menos un nodo para enviar los cambios de configuración.

LEA: Cómo configurar un Chef 12 en CentOS 7/RHEL 7

Libro de cocina:

Chef Cookbooks es una unidad que contiene la configuración y los detalles de la política para llevar un nodo a un estado particular. Los libros de cocina se crean en una estación de trabajo y luego se cargan en el servidor Chef. A continuación, se asigna un libro de recetas a los nodos "run-list", que es una lista secuencial de acciones que se ejecutarán en un nodo para llevar el nodo al estado deseado.

Crear un libro de recetas de chef simple:

En esta parte, crearemos un libro de recetas simple para instalar y configurar un servidor web Apache.

LEER:Configurar LAMP en CentOS 7/RHEL 7

Inicie sesión en su estación de trabajo Chef, vaya a su ~/chef-repo/cookbooks directorio.

cd ~/chef-repo/cookbooks/

Cree el libro de cocina llamado "httpd “. Reemplace “httpd “, si quieres nombrarlo de otra manera.

chef generate cookbook httpd

Salida:

Generating cookbook httpd
- Ensuring correct cookbook file content
- Ensuring delivery configuration
- Ensuring correct delivery build cookbook content

Your cookbook is ready. Type `cd httpd` to enter it.

There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local --help` to see a full list.

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

test/recipes/default_test.rb

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

recipes/default.rb

Vaya al directorio de su libro de cocina recién creado, es decir, httpd .

cd httpd

Cuando ingresa al directorio del nuevo libro de cocina, puede ver la estructura del directorio a continuación.

Salida:

-rw-r--r--. 1 root root   47 Nov 12 21:18 Berksfile
-rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore
-rw-r--r--. 1 root root  568 Nov 12 21:18 metadata.rb
-rw-r--r--. 1 root root   53 Nov 12 21:18 README.md
drwxr-xr-x. 2 root root   23 Nov 12 21:18 recipes
drwxr-xr-x. 3 root root   38 Nov 12 21:18 spec
drwxr-xr-x. 3 root root   20 Nov 12 21:18 test

Receta:

Una receta consta de una serie de recursos que definen el estado de un servicio o una aplicación en particular, por ejemplo, un recurso podría decir "el servicio NTP debería estar ejecutándose", otro podría decir "el servicio telnet debería detenerse"

La receta no se limita solo a administrar servicios; también se puede utilizar para ejecutar los comandos, gestión de usuarios, mucho más.

LEER:Diferentes tipos de recursos.

Ir al directorio de recetas. Allí puede ver un archivo llamado “default.rb “. Vamos a usar este archivo para agregar los recursos necesarios para que el servidor Apache se ejecute.

cd recipes
cat default.rb

Salida:

De forma predeterminada, el archivo tiene líneas de encabezado.

#
# Cookbook Name:: httpd
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.

Instalar Apache:

Para comenzar, agreguemos un recurso para instalar el paquete apache.

package 'httpd' do
  action :install
end

donde,

paquete – Define el paquete de recursos

httpd –  Nombre del paquete que desea instalar, debe ser un nombre de paquete legítimo.

acción:instalar –  Esto especifica la acción para el recurso "paquete “, en nuestro caso, instalación de httpd .

Cuando esta receta se ejecuta en el nodo, Chef verificará si Apache está instalado; si lo está, omitirá este recurso e irá al siguiente recurso. Si no, instalará Apache utilizando el instalador del sistema.

Administrar el servicio de Apache:

A continuación, haga que el servicio Apache se inicie automáticamente al iniciar el sistema y también el servicio debería estar en funcionamiento. El siguiente código hace lo que requerimos.

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

donde,

servicio – Define recurso de servicio.

httpd –  El nombre del servicio debe ser un nombre de servicio legítimo.

acción [ :habilitar, :iniciar] – Especifique las acciones que desea realizar. En nuestro caso, este recurso comenzará “httpd ” y habilitarlo en el inicio.

Archivo de índice:

Nuestro próximo recurso es para colocar el index.html archivo en la raíz del documento del servidor Apache. Todo lo que necesita para especificar la ubicación donde desea el archivo y de dónde obtener el archivo.

cookbook_file "/var/www/html/index.html" do
  source "index.html"
  mode "0644"
end

donde,

archivo_libro_de_recetas – Recurso para transferir archivos desde un subdirectorio de httpd/files a una ruta mencionada ubicada en un nodo chef.

fuente – Especifique el nombre del archivo fuente. Los archivos normalmente se encuentran en COOK_BOOKS/files .

modo – Establece los permisos para el archivo.

Creación del archivo de índice:

Ya que hemos definido un “archivo_libro de recetas ”, necesitamos crear un archivo fuente “index.html ” dentro de archivos subdirectorio de su libro de cocina.

cd ~/chef-repo/cookbooks

Cree un subdirectorio "archivos ” debajo de su libro de cocina.

mkdir httpd/files

Agregue un texto simple en el index.html .

echo "Installed and Setup Using Chef" > httpd/files/index.html

Cortafuegos:

Nuestro último recurso será configurar el firewall para permitir http y https tráfico de máquinas externas.

execute 'httpd_firewall' do
  command '/usr/bin/firewall-cmd  --permanent --zone public --add-service http'
  ignore_failure true
end

execute 'reload_firewall' do
  command '/usr/bin/firewall-cmd --reload'
  ignore_failure true
end

donde,

ejecutar – Recurso para ejecutar un solo comando.

comando – Define un comando real que desea ejecutar en el nodo.

ignorar_fallo – Continúe ejecutando una receta incluso si un recurso falla por algún motivo, será útil cuando el sistema no tenga habilitado el firewallD.

La versión final de default.rb se verá como a continuación.

vi ~chef-repo/cookbooks/httpd/recpies/default.rb

Salida:

#
# Cookbook Name:: httpd
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.

package 'httpd' do
  action :install
end

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

cookbook_file "/var/www/html/index.html" do
  source "index.html"
  mode "0644"
end

execute 'httpd_firewall' do
  command '/usr/bin/firewall-cmd  --permanent --zone public --add-service http'
  ignore_failure true
end

execute 'reload_firewall' do
  command '/usr/bin/firewall-cmd --reload'
  ignore_failure true
end

Subir el libro de cocina:

Una vez que su libro de cocina esté completo, puede cargarlo en su servidor Chef.

knife cookbook upload httpd

Salida:

Uploading httpd        [0.1.0]
Uploaded 1 cookbook.

Compruebe si puede enumerar el libro de cocina que acaba de cargar.

knife cookbook list

Salida:

httpd   0.1.0

Para quitar el libro de recetas (opcional ).

knife cookbook delete cookbook_name

Agregue el libro de recetas a su nodo:

Puede agregar un libro de cocina a la run_list de un nodo en particular usando el siguiente comando. Reemplace chefclient.itzgeek.local con el nombre de su nodo cliente.

knife node run_list add chefclient.itzgeek.local httpd

Salida:

chefclient.itzgeek.local:
  run_list: recipe[httpd]

Para eliminar la receta particular de run_list (opcional ).

knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]

Recuperación de la configuración:

Inicie sesión en el nodo del cliente donde se ejecuta el software del cliente Chef.

LEER:Bootstrapping de un nuevo nodo con Knife

Ejecute el chef-client Comando en el nodo del cliente para verificar con el servidor de Chef si hay alguna nueva run_list y ejecute esos run_list que le ha sido asignado.

chef-client

Salida:

Starting Chef Client, version 12.16.42
resolving cookbooks for run list: ["httpd"]
Synchronizing Cookbooks:
  - httpd (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 5 resources
Recipe: httpd::default
  * yum_package[httpd] action install
    - install version 2.4.6-40.el7.centos.4 of package httpd
  * service[httpd] action enable
    - enable service service[httpd]
  * service[httpd] action start
    - start service service[httpd]
  * cookbook_file[/var/www/html/index.html] action create (up to date)
  * execute[httpd_firewall] action run
    - execute /usr/bin/firewall-cmd  --permanent --zone public --add-service http
  * execute[reload_firewall] action run
    - execute /usr/bin/firewall-cmd --reload

Running handlers:
Running handlers complete
Chef Client finished, 5/6 resources updated in 24 seconds

Puede verificar que esto funciona visitando la dirección IP o el nombre de dominio de su nodo en un navegador web.

http://su-dirección-ip-ess/

Salida:

Extras:

Recetario de chef para crear un usuario:

Puede usar el siguiente libro de recetas para crear un nuevo usuario. Reemplace el verde valores de acuerdo a su entorno.

group "raj" do
  gid 9999
end


user 'raj' do
  comment 'Admin [at] ITzGeek'
  uid '9999'
  gid '9999'
  manage_home true
  home '/home/raj'
  shell '/bin/bash'
  password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/'
end

Eso es todo.


Cent OS
  1. Cómo crear un archivo Kickstart para CentOS/Fedora/RedHat (RHEL)

  2. Supervise y administre sus servicios con Monit en CentOS 6 / RHEL 6

  3. Cómo crear un puente de red en CentOS 7/RHEL 7

  4. Instale PartKeepr (Sistema de gestión de inventario) en CentOS y RHEL

  5. CentOS/RHEL:cómo crear y alojar un repositorio de yum en httpd

Audite su infraestructura:instale Rudder Agent en CentOS / Ubuntu / Debian

Audite su infraestructura:instale Rudder Server en CentOS 7 / Ubuntu 16.04 / Debian

Cómo crear tu primer programa Java en CentOS 8

Cómo crear un usuario de Sudo en RHEL, CentOS, Rocky y AlmaLinux

Configure su propio servidor VPN WireGuard en CentOS/RHEL

3 formas de crear un puente de red en RHEL/CentOS 8