GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Chef Server, Workstation y Chef Client en Ubuntu 18.04

Chef es una herramienta de gestión de configuración basada en Ruby que se utiliza para definir la infraestructura como código. Esto permite a los usuarios automatizar la gestión de muchos nodos y mantener la coherencia entre esos nodos. Las recetas declaran el estado deseado para los nodos administrados y se crean en la estación de trabajo de un usuario mediante el paquete Chef Workstation. Sus recetas se distribuyen a través de los nodos a través de un servidor Chef. Un cliente Chef, instalado en cada nodo, se encarga de aplicar la receta a su nodo correspondiente. Esta guía le mostrará cómo instalar y configurar Chef Server y Chef Workstation. También iniciaremos un nodo para administrar con Chef.

En este tutorial aprenderás:

  • Instalar y configurar Chef Server
  • Crear usuario Chef y organización
  • Instalar y configurar la estación de trabajo Chef
  • Configurar cuchillo y arrancar un nodo de cliente

Chef Arquitectura.

Requisitos de software y convenciones utilizadas

Instalar y configurar Chef Server

El servidor de Chef es el centro de interacción entre todas las estaciones de trabajo y los nodos bajo la administración de Chef. Los cambios realizados en el código de configuración en las estaciones de trabajo se envían al servidor Chef y, a continuación, el chef-cliente de un nodo los extrae para aplicar las configuraciones.

Descargue el último servidor de Chef ejecutando el siguiente comando:

# wget https://packages.chef.io/files/stable/chef-server/12.18.14/ubuntu/18.04/chef-server-core_12.18.14-1_amd64.deb

Ahora instale el paquete del servidor con el siguiente comando:

# dpkg -i chef-server-core_*.deb

El servidor Chef incluye una utilidad de línea de comandos llamada chef-server-ctl. Ejecute chef-server-ctl para iniciar los servicios del servidor Chef.

# chef-server-ctl reconfigure

Luego de una configuración exitosa del servidor chef, verá el siguiente mensaje y también verificará el estado de ejecución del servidor chef.

Chef Client finished, 493/1100 resources updated in 12 minutes 02 seconds
Chef Server Reconfigured!
root@ubuntubox1:~# chef-server-ctl status
run: bookshelf: (pid 1435) 6644s; run: log: (pid 1440) 6644s
run: nginx: (pid 1235) 6653s; run: log: (pid 1744) 6631s
run: oc_bifrost: (pid 1196) 6657s; run: log: (pid 1203) 6657s
run: oc_id: (pid 1220) 6655s; run: log: (pid 1227) 6655s
run: opscode-erchef: (pid 4376) 6432s; run: log: (pid 1508) 6644s
run: opscode-expander: (pid 1335) 6648s; run: log: (pid 1431) 6646s
run: opscode-solr4: (pid 1244) 6650s; run: log: (pid 1285) 6649s
run: postgresql: (pid 1176) 6659s; run: log: (pid 1180) 6659s
run: rabbitmq: (pid 4188) 6443s; run: log: (pid 1748) 6631s
run: redis_lb: (pid 27397) 6931s; run: log: (pid 1735) 6632s
root@ubuntubox1:~#

Crear usuario Chef y organización

Para vincular estaciones de trabajo y nodos al servidor Chef, cree un administrador y una organización con claves privadas RSA asociadas.
Desde el directorio de inicio, cree un directorio .chef para almacenar las claves.

# mkdir .chef

Utilice chef-server-ctl para crear un usuario. En este ejemplo, cambie lo siguiente para que coincida con sus necesidades:NOMBRE_USUARIO, NOMBRE_NOMBRE, APELLIDO, CORREO ELECTRÓNICO y CONTRASEÑA. Ajuste USER_NAME.pem y deje la extensión .pem.

chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~/.chef/USER_NAME.pem
root@ubuntubox1:~# chef-server-ctl user-create chefadmin Chef Administrator chefadmin@@ubuntubox1.com '*******' --filename ~/.chef/chefadmin.pem

Para ver la lista de todos los usuarios en su servidor Chef, emita el siguiente comando:

root@ubuntubox1:~# chef-server-ctl user-list
chefadmin
pivotal

Cree una organización y agregue el usuario creado en el paso anterior. Reemplace ORG_NAME con un identificador corto para la organización, ORG_FULL_NAME con el nombre completo de la organización, USER_NAME con el nombre de usuario creado en el paso anterior y ORG_NAME.pem con el identificador corto de la organización seguido de .pem.

chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USER_NAME --filename ~/.chef/ORG_NAME.pem
root@ubuntubox1:~# chef-server-ctl org-create chef-on-ubuntu "Chef Infrastructure on Ubuntu 18.04" --association_user chefadmin --filename ~/.chef/chef-on-ubuntu.pem

Para ver la lista de todas las organizaciones en su servidor Chef, use el siguiente comando:

root@ubuntubox1:~# chef-server-ctl org-list
chef-on-ubuntu

Con el servidor Chef instalado y las claves RSA generadas, comenzaremos a configurar la estación de trabajo Chef. La estación de trabajo es donde se crearán todas las configuraciones principales para sus nodos.

Instalar y configurar la estación de trabajo Chef

La estación de trabajo Chef es donde crea y configura recetas, libros de cocina, atributos y otros cambios necesarios para administrar sus nodos. Aunque esta puede ser una máquina local que ejecuta cualquier sistema operativo, hay algunos beneficios en mantener un servidor remoto como su estación de trabajo para que pueda acceder a él desde cualquier lugar.

En esta sección, descargará e instalará el paquete Chef Workstation, que proporciona todas las herramientas que también se incluyen con ChefDK, el kit de desarrollo de Chef.

Descarga la última estación de trabajo Chef:

root@ubuntubox2:~# wget  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
--2019-06-03 13:35:51--  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
Resolving packages.chef.io (packages.chef.io)... 151.101.142.110
Connecting to packages.chef.io (packages.chef.io)|151.101.142.110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 129713682 (124M) [application/x-debian-package]
Saving to: ‘chef-workstation_0.2.43-1_amd64.deb’

chef-workstation_0.2.43-1_amd64.deb       100%[=====================================================================================>] 123.70M  1.51MB/s    in 80s

2019-06-03 13:37:17 (1.55 MB/s) - ‘chef-workstation_0.2.43-1_amd64.deb’ saved [129713682/129713682]

Instalar Chef Workstation:

root@ubuntubox2:~# dpkg -i chef-workstation_*.deb
Selecting previously unselected package chef-workstation.
(Reading database ... 117468 files and directories currently installed.)
Preparing to unpack chef-workstation_0.2.43-1_amd64.deb ...
Unpacking chef-workstation (0.2.43-1) ...
Setting up chef-workstation (0.2.43-1) ...

To run the experimental Chef Workstation App, use your
platform's package manager to install these dependencies:

        libgconf-2.so.4 => not found
You can then 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://chef.sh/

Ahora necesitamos crear el repositorio Chef. El directorio chef-repo almacenará sus libros de cocina Chef y otros archivos relacionados.

# chef generate repo chef-repo

Cree un subdirectorio .chef. El subdirectorio .chef almacenará el archivo de configuración de Knife y los archivos .pem que se utilizan para la autenticación del par de claves RSA con el servidor Chef. Vaya al directorio chef-repo:

root@ubuntubox2:~# mkdir ~/chef-repo/.chef
root@ubuntubox2:~# cd chef-repo
root@ubuntubox2:~/chef-repo#

La autenticación entre el servidor Chef y la estación de trabajo y/o los nodos se completa con cifrado de clave pública. Esto garantiza que el servidor de Chef solo se comunique con máquinas de confianza. En esta sección, las claves privadas RSA, generadas al configurar el servidor Chef, se copiarán en la estación de trabajo para permitir la comunicación entre el servidor Chef y la estación de trabajo.

Generaremos un par de claves RSA en el servidor de la estación de trabajo. Este par de claves se utilizará para obtener acceso al servidor de Chef y luego transferir sus archivos .pem:

root@ubuntubox2:~# ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:sR+Nloq6vsc7rX4ZmMInP3SKdk4fYEJH1iLoKNm1YMg [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|.. .  o.         |
|.E+ oo. .        |
| * o.o...        |
|+ o...   o +     |
|.  .. ooS = .    |
|    +o=oo+ .     |
|     Oo+oo.      |
|    ooO.+.       |
|   o=B=*.        |
+----[SHA256]-----+
root@ubuntubox2:~#

Cargue la clave pública del nodo de la estación de trabajo en el nodo del servidor Chef.

root@ubuntubox2:~# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.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 protected]'s password:

Number of key(s) added: 1

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

root@ubuntubox2:~#

Copie los archivos .pem de su servidor Chef a su estación de trabajo usando el comando scp.

root@ubuntubox2:~# scp [email protected]:~/.chef/*.pem ~/chef-repo/.chef/
chefadmin.pem                                                                                                                         100% 1674    27.9KB/s   00:00
chef-on-ubuntu.pem                                                                                                                    100% 1674   496.8KB/s   00:00

Confirme que los archivos se hayan copiado correctamente enumerando el contenido del directorio .chef. Los archivos .pem deben aparecer en la lista.

root@ubuntubox2:~# ls ~/chef-repo/.chef
chefadmin.pem  chef-on-ubuntu.pem

Generar un nuevo libro de cocina Chef:

root@ubuntubox2:~# 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/ctl_chef.html#chef-generate-cookbook for more information.
Generating cookbook chef-first-cookbook
- Ensuring correct cookbook file content
- Ensuring delivery configuration
- Ensuring correct delivery build cookbook content

Your cookbook is ready. Type `cd chef-first-cookbook` 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/integration/default/default_test.rb

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

recipes/default.rb

Genere el repositorio de chef y muévase al directorio recién creado:

# chef generate app chef-repo
# cd chef-repo

Configurar cuchillo y arrancar un nodo de cliente

Cree un archivo de configuración del cuchillo navegando al directorio ~/chef-repo/.chef y creando un archivo llamado config.rb usando su editor de texto preferido.

Copie la siguiente configuración en el archivo config.rb:


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

El valor de node_name debe ser el nombre de usuario que se creó en el servidor de Chef.
Cambie USER.pem en client_key para reflejar el archivo .pem para el usuario chef.
Validation_client_name debe ser ORG_NAME de la organización seguido de - validator.
ORGANIZATION-validator.pem en la ruta de la clave_validación debe establecerse en ORG_NAME seguido de -validator.pem.
Finalmente, chef_server_url debe ser el dominio del servidor Chef con /organizations/ORG_NAME agregado. Asegúrese de reemplazar ORG_NAME con el nombre de la organización.

Vaya al directorio chef-repo y copie los certificados SSL necesarios del servidor:

root@ubuntubox2:~/chef-repo/.chef# cd ..
root@ubuntubox2:~/chef-repo# knife ssl fetch
WARNING: Certificates from ubuntubox1.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 ubuntubox1_com in /root/chef-repo/.chef/trusted_certs/ubuntubox1_com.crt

Confirme que config.rb esté configurado correctamente ejecutando la lista de clientes. Este comando debería mostrar el nombre del validador.

root@ubuntubox2:~/chef-repo# knife client list
chef-on-ubuntu-validator

Arrancar un nodo instala el cliente Chef en el nodo y valida el nodo. Esto permite que el nodo lea desde el servidor Chef y despliegue y aplique cualquier actualización de configuración necesaria detectada por el chef-cliente.
Desde la estación de trabajo, navegue hasta el directorio ~/chef-repo/.chef:

# cd ~/chef-repo/.chef

Arranca el nodo cliente ya sea utilizando el usuario raíz del nodo cliente o un usuario con privilegios elevados:

root@ubuntubox2:~/chef-repo/.chef# knife bootstrap ubuntubox3.com -x root -P ******* --node-name chef-client-node
Creating new client for chef-client-node
Creating new node for chef-client-node
Connecting to ubuntubox3.com
ubuntubox3.com -----> Installing Chef Omnibus (-v 14)
ubuntubox3.com downloading https://omnitruck-direct.chef.io/chef/install.sh
ubuntubox3.com   to file /tmp/install.sh.2019/install.sh
ubuntubox3.com trying wget...
ubuntubox3.com ubuntu 18.04 x86_64
ubuntubox3.com Getting information for chef stable 14 for ubuntu...
ubuntubox3.com downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=14&p=ubuntu&pv=18.04&m=x86_64
ubuntubox3.com   to file /tmp/install.sh.2023/metadata.txt
ubuntubox3.com trying wget...
ubuntubox3.com sha1     ed9b1fcdaf947d9a3d60e6d196308183a082bcff
ubuntubox3.com sha256   9ddcd5ceef19c95ecc1f34bef080c23d9cb42ae8ebc69fd41dcf1c768a6a708f
ubuntubox3.com url      https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com version  14.13.11
ubuntubox3.com downloaded metadata file looks valid...
ubuntubox3.com downloading https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com   to file /tmp/install.sh.2023/chef_14.13.11-1_amd64.deb
ubuntubox3.com trying wget...
ubuntubox3.com Comparing checksum with sha256sum...
ubuntubox3.com Installing chef 14
ubuntubox3.com installing with dpkg...
ubuntubox3.com Selecting previously unselected package chef.
(Reading database ... 117468 files and directories currently installed.)
ubuntubox3.com Preparing to unpack .../chef_14.13.11-1_amd64.deb ...
ubuntubox3.com Unpacking chef (14.13.11-1) ...
ubuntubox3.com Setting up chef (14.13.11-1) ...
ubuntubox3.com Thank you for installing Chef Infra Client! For help getting started visit https://learn.chef.io
ubuntubox3.com Starting the first Chef Client run...
ubuntubox3.com Starting Chef Client, version 14.13.11
ubuntubox3.com resolving cookbooks for run list: []
ubuntubox3.com Synchronizing Cookbooks:
ubuntubox3.com Installing Cookbook Gems:
ubuntubox3.com Compiling Cookbooks...
ubuntubox3.com [2019-06-03T14:01:44+04:00] WARN: Node chef-client-node has an empty run list.
ubuntubox3.com Converging 0 resources
ubuntubox3.com
ubuntubox3.com Running handlers:
ubuntubox3.com Running handlers complete
ubuntubox3.com Chef Client finished, 0/0 resources updated in 05 seconds
Confirm that the node has been bootstrapped by listing the client nodes:
root@ubuntubox2:~/chef-repo/.chef# 

Confirme que el nodo se haya iniciado correctamente enumerando los nodos:

root@ubuntubox2:~/chef-repo/.chef# knife node list
chef-client-node
root@ubuntubox2:~/chef-repo/.chef# knife node show chef-client-node
Node Name:   chef-client-node
Environment: _default
FQDN:        ubuntubox3.com
IP:          192.168.1.107
Run List:
Roles:
Recipes:
Platform:    ubuntu 18.04
Tags:

Conclusión

En este artículo detallado aprendimos sobre la herramienta Chef Configuration Management con su comprensión básica y descripción general de sus componentes con ajustes de instalación y configuración. Puede obtener más información sobre Chef visitando el sitio web de Chef, es decir, https://www.chef.io/


Ubuntu
  1. Cómo instalar el servidor y el cliente NTP en Ubuntu 18.04 LTS

  2. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  3. Cómo instalar NFS Client y Server en Ubuntu 20.04

  4. Instalar UrBackup Server and Client en Ubuntu 20.04 - ¿Cómo hacerlo?

  5. Instale el servidor y el cliente vnc en Ubuntu

Cómo instalar y ejecutar Lynis en Ubuntu Linux

Cómo instalar servidor y cliente NFS en Ubuntu

Cómo instalar servidor y cliente NTP en Ubuntu

Cómo instalar UrBackup Server and Client en Ubuntu 20.04

Cómo instalar el servidor y el cliente Telnet en Ubuntu

Cómo instalar el servidor NTP y los clientes en Ubuntu 20.04 LTS

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema Ubuntu Linux 18.04
    Software Chef Server Core, Chef Workstation, Chef Client, Chef Development Kit
    Otro Acceso privilegiado a su sistema Linux como root o a través de sudo comando.
    Convenciones # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios