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

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

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

En este tutorial aprenderás:

  • Instalar y configurar el servidor Chef
  • Crear usuario y organización del chef
  • Instalar y configurar la estación de trabajo del chef
  • Configurar cuchillo y arranque un nodo cliente

Arquitectura de chef.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de 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 del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalar y configurar el servidor Chef

El servidor Chef es el centro de interacción entre todas las estaciones de trabajo y nodos bajo la administración de chef. Los cambios realizados en el código de configuración en las estaciones de trabajo se impulsan al servidor Chef, y luego se retira por el Chef-Client de un nodo para aplicar las configuraciones.

Descargue el último servidor Chef ejecutando el siguiente comando:

# wget https: // paquetes.cocinero.io/archivos/stable/chef-server/12.18.14/Ubuntu/18.04/Chef-Server-Core_12.18.14-1_amd64.debutante 


Ahora instale el paquete del servidor por el siguiente comando:

# DPKG -I Chef-Server-Core_*.debutante 

El servidor Chef incluye una utilidad de línea de comando llamada chef-server-ctl. Ejecutar Chef-Server-CTL para iniciar los servicios del servidor Chef.

# Chef-Server-CTL Reconfigure 

Tras la configuración exitosa del servidor Chef, verá el siguiente mensaje y verificará el estado del servidor Chef que ejecuta el estado también.

Cliente Chef terminado, 493/1100 Recursos actualizados en 12 minutos 02 segundos Chef Server reconfigurado! 
root@Ubuntubox1: ~# Chef-Server-CTL Status Ejecutar: estantería: (PID 1435) 6644S; Ejecutar: Log: (PID 1440) 6644s Ejecutar: Nginx: (PID 1235) 6653S; Ejecutar: Log: (PID 1744) 6631s Ejecutar: OC_BIFROST: (PID 1196) 6657S; Ejecutar: Log: (PID 1203) 6657s Ejecutar: OC_ID: (PID 1220) 6655S; Ejecutar: Log: (PID 1227) 6655s Ejecutar: OpScode-Erchef: (PID 4376) 6432S; Ejecutar: Log: (PID 1508) 6644s Ejecutar: OpScode-Experner: (PID 1335) 6648S; Ejecutar: Log: (PID 1431) 6646s Ejecutar: OpScode-Solr4: (PID 1244) 6650s; Ejecutar: Log: (PID 1285) 6649s Ejecutar: PostgreSQL: (PID 1176) 6659S; Run: Log: (PID 1180) 6659s Run: RabbitMQ: (PID 4188) 6443S; Ejecutar: Log: (PID 1748) 6631s Ejecutar: Redis_LB: (PID 27397) 6931S; Ejecutar: Log: (PID 1735) 6632s root@ubuntubox1: ~# 

Crear usuario y organización del chef

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

# mkdir .cocinero 

Use Chef-Server-CTL para crear un usuario. En este ejemplo, cambie lo siguiente para que coincida con sus necesidades: user_name, first_name, last_name, correo electrónico y contraseña. Ajustar user_name.Pem, y deja el .extensión de PEM.

Chef-server-ctl user-create user_name First_name last_name Correo electrónico 'contraseña'--filename ~/.chef/user_name.pem
root@Ubuntubox1: ~# Chef-Server-CTL User-create Chefadmin Chef Administrator Chefadmin @@ Ubuntubox1.com '*******' - -filename ~/.chef.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 fund 

Crear una organización y agregar 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 las organizaciones, user_name con el nombre de usuario creado en el paso anterior y org_name.PEM con el breve identificador 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 "infraestructura de chef en Ubuntu 18.04 "--sociation_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 teclas 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 del chef

La estación de trabajo de Chef es donde crea y configura cualquier receta, 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 algún beneficio para mantener un servidor remoto como estación de trabajo para que pueda acceder a ella desde cualquier lugar.

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

Descargue la última estación de trabajo de Chef:

root@ubuntubox2: ~# wget https: // paquetes.cocinero.io/archivos/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.Deb --2019-06-03 13: 35: 51-- https: // paquetes.cocinero.io/archivos/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.paquetes de resolución de Deb.cocinero.IO (paquetes.cocinero.io) ... 151.101.142.110 conectándose a paquetes.cocinero.IO (paquetes.cocinero.io) | 151.101.142.110 |: 443 ... conectado. Solicitud HTTP enviada, en espera de respuesta ... 200 OK Longitud: 129713682 (124m) [Aplicación/X-deBian-Package] Guardar a: 'Chef-Workstation_0.2.43-1_amd64.Deb 'Chef-WorkStation_0.2.43-1_amd64.Deb 100%[================================================ =======================================>] 123.70m 1.51mb/s en 80S 2019-06-03 13:37:17 (1.55 MB/s) - 'Chef -Workstation_0.2.43-1_amd64.Deb 'Saved [129713682/129713682] 

Instale la estación de trabajo del Chef:

root@ubuntubox2: ~# dpkg -i chef -workstation_*.Deb Seleccionar la estación de trabajo del paquete de paquete previamente no seleccionado. (Lectura de la base de datos ... 117468 archivos y directorios actualmente instalados.) Preparándose para desempaquetar chef-workstation_0.2.43-1_amd64.Deb ... desempaquetando Chef-Workstation (0.2.43-1) ... Configuración de Chef-Workstation (0.2.43-1) ... Para ejecutar la aplicación Experimental Chef Workstation, use el Administrador de paquetes de su plataforma para instalar estas dependencias: libgconf-2.entonces.4 => No se encuentra que puede iniciar la aplicación ejecutando 'chef-workstation-app'. La aplicación estará disponible en la bandeja del sistema. Gracias por instalar Chef Workstation! Puede encontrar algunos consejos para comenzar en https: // chef.sh/ 

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

# Chef Genere Repo Chef-Repo 

Crear un .subdirectorio de chef. El .El subdirectorio de Chef almacenará el archivo de configuración de cuchillo y el .Archivos PEM que se utilizan para la autenticación de pares de teclas RSA con el servidor Chef. Muévase 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 de chef y la estación de trabajo y/o nodos se completa con el cifrado de clave pública. Esto asegura que el servidor Chef solo se comunique con máquinas de confianza. En esta sección, las claves privadas de RSA, generadas al configurar el servidor Chef, se copiarán en la estación de trabajo para permitir comunicarse entre el servidor Chef y la estación de trabajo.

Generaremos un par de claves RSA en el servidor de estación de trabajo. Este par de claves se utilizará para obtener acceso al servidor de chef y luego transferir su .Archivos PEM:

root@ubuntubox2: ~# ssh -keygen -b 4096 Generación de pares de claves RSA públicas/privadas. Ingrese el archivo en el que guardar la clave (/root/.ssh/id_rsa): directorio creado '/root/.ssh '. Ingrese la frase de pases (vacío sin frase de pases): ingrese la misma frase de pases nuevamente: su identificación se ha guardado en /root /.ssh/id_rsa. Su clave pública se ha guardado en /root /.ssh/id_rsa.pub. La huella digital clave es: SHA256: SR+NLOQ6VSC7RX4ZMMINP3SKDK4FYEJH1ILOKNM1YMG [email protected] la imagen Randomart de la tecla es: + --- [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 al nodo del servidor Chef.

root@ubuntubox2: ~# ssh-copy-id [email protected]/usr/bin/ssh-copy-id: info: fuente de la (s) de clave para ser instaladas: "/root/.ssh/id_rsa.PUB "/usr/bin/ssh-copy-id: info: intento de iniciar sesión con las nuevas teclas (s), para filtrar cualquiera que ya esté instalada/usr/bin/ssh-copy-id: info: 1 clave (S) aún no se está instalando: si se le solicita ahora, es instalar las nuevas teclas [email protected]ña de COM: Número de teclas agregadas: 1 Ahora intente iniciar sesión en la máquina, con: "ssh '[email protected] '"y verifique para asegurarse de que solo se agregaran las llave (s) que deseaba. root@ubuntubox2: ~# 

Copia el .archivos PEM desde su servidor Chef a su estación de trabajo utilizando el comando SCP.

root@ubuntubox2: ~# scp [email protected]: ~/.cocinero/*.PEM ~/Chef-Repo/.chef.PEM 100% 1674 27.9kb/s 00:00 Chef-on-Ubuntu.PEM 100% 1674 496.8kb/s 00:00 

Confirme que los archivos se han copiado con éxito en enumerar el contenido del .directorio de chef. El .Los archivos PEM deben estar enumerados.

root@ubuntubox2: ~# ls ~/chef-repo/.Chef Chefadmin.Pem Chef-on-Ubuntu.pem 


Genere un nuevo libro de cocina de Chef:

root@Ubuntubox2: ~# Chef Generar el libro de cocina Chef-First-Cookbook Las guiones se desaniman en los nombres de los libros de cocina, ya que pueden causar problemas con los recursos personalizados. Ver https: // documentos.cocinero.io/ctl_chef.HTML#Chef-Generate-Cookbook para más información. Generación del libro de cocina Chef -First Cookbook - Asegurar el contenido correcto del archivo de libros de cocina - Asegurar la configuración de la entrega - Asegurar la entrega correcta Construir contenido de libros de cocina Su libro de cocina está listo. Escriba 'CD Chef-First-Cookbook' para ingresarlo. Hay varios comandos que puede ejecutar para comenzar a desarrollar y probar localmente su libro de cocina. Escriba 'entrega local --help' para ver una lista completa. ¿Por qué no comenzar escribiendo una prueba?? Las pruebas para la receta predeterminada se almacenan en: test/integración/default/default_test.RB Si prefiere sumergirse bien, la receta predeterminada se puede encontrar en: recetas/predeterminado.RB 

Genere el Chef-Repo y mude al directorio recién creado:

# Chef Generar la aplicación Chef-Repo # CD Chef-Repo 

Configurar cuchillo y arranque un nodo cliente

Cree un archivo de configuración de cuchillo navegando a ~/Chef-Repo/.Directorio de Chef y crear un archivo llamado Config.RB usando su editor de texto preferido.

Copie la siguiente configuración en la configuración.Archivo RB:

 actual_dir = archivo.dirname (__ archivo__) log_level: info log_location stdout node_name 'node_name' client_key "usuario.PEM "Validation_client_name 'org_name-validator' Validation_key" Validator de organización.PEM "CHEF_SERVER_URL 'https: // ubuntubox1.com/organizaciones/org_name 'cache_type' BasicFile 'Cache_options (: Path => "#env [' home ']/.Chef/CheckSums ") Cookbook_path ["#current_dir/.../Cookbooks "] 
Copiar

El valor para Node_Name debe ser el nombre de usuario que se creó en el servidor Chef.
Cambiar usuario.PEM bajo Client_Key para reflejar el .Archivo PEM para el usuario de Chef.
Validation_client_name debe ser el ORG_NAME de la organización seguido de -Validator.
Validador de la organización.PEM en la ruta de validación_key debe establecerse en el ORG_NAME seguido de -Validator.pem.
Finalmente, el chef_server_url debe ser el dominio del servidor de chef con /organizaciones /org_name agregado. Asegúrese de reemplazar a Org_Name con el nombre de la organización.

Muévase 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 Advertencia: Certificados de Ubuntubox1.com se obtendrá y se colocará en su directorio de confianza_cert (/root/chef-repo/.Chef/Trusted_Certs). El cuchillo no tiene medios para verificar que estos son los certificados correctos. Debe verificar la autenticidad de estos certificados después de descargar. Agregar certificado para Ubuntubox1_com en/root/chef-Repo/.Chef/Trusted_Certs/Ubuntubox1_com.CRT 


Confirmar que config.RB se configura correctamente ejecutando la lista de clientes. Este comando debe emitir el nombre del validador.

root@Ubuntubox2: ~/Chef-Repo# Knife Lista de clientes Chef-on-Ubuntu-Validator 

Bootstrapping A Node instala el cliente Chef en el nodo y valida el nodo. Esto permite que el nodo lea desde el servidor Chef y retire hacia abajo y aplique las actualizaciones de configuración necesarias detectadas por el Chef-Client.
Desde la estación de trabajo, navegue a ~/chef-repo/.Directorio de chef:

# CD ~/Chef-Repo/.cocinero 

Bootstrap el nodo del cliente utilizando el usuario root del nodo del cliente o un usuario con privilegios elevados:

root@ubuntubox2: ~/chef-repo/.Chef# cuchillo Bootstrap Ubuntubox3.com -x root -p *******--Node-Node Chef-Client-Node creando un nuevo cliente para el nodo Chef-Client Creación de un nuevo nodo para el nodo Chef-Client que se conecta a UBUnTubox3.com ubuntubox3.com -----> Instalación de Chef Omnibus (-v 14) Ubuntubox3.com descarga https: // omnitruck-direct.cocinero.IO/Chef/Instalar.sh ubuntubox3.com para archivar /tmp /instalar.mierda.2019/instalar.sh ubuntubox3.com intentar wget ... ubuntubox3.com ubuntu 18.04 x86_64 Ubuntubox3.com obtener información para Chef Stable 14 para Ubuntu ... Ubuntubox3.com descarga https: // omnitruck-direct.cocinero.io/stable/chef/metadatos?V = 14 y P = Ubuntu & PV = 18.04 y M = x86_64 Ubuntubox3.com para archivar /tmp /instalar.mierda.2023/metadatos.txt ubuntubox3.com intentar wget ... ubuntubox3.com sha1 ed9b1fcdaf947d9a3d60e6d196308183a082bcff ubuntubox33.com sha256 9ddcd5ceef19c95ecc1f34bef080c23d9cb42ae8ebc69fd41dcf1c768a6a708f ubuntubox33.com url https: // paquetes.cocinero.io/archivos/stable/chef/14.13.11/Ubuntu/18.04/Chef_14.13.11-1_amd64.Deb ubuntubox3.com versión 14.13.11 Ubuntubox3.COM El archivo de metadatos descargados se ve válido ... UBUNTUBOX3.com descarga https: // paquetes.cocinero.io/archivos/stable/chef/14.13.11/Ubuntu/18.04/Chef_14.13.11-1_amd64.Deb ubuntubox3.com para archivar /tmp /instalar.mierda.2023/chef_14.13.11-1_amd64.Deb ubuntubox3.com intentar wget ... ubuntubox3.com comparando la suma de verificación con Sha256sum ... Ubuntubox3.com instalando chef 14 ubuntubox3.com instalando con dpkg ... ubuntubox3.com selección de chef de paquete no seleccionado previamente no seleccionado. (Lectura de la base de datos ... 117468 archivos y directorios actualmente instalados.) ubuntubox3.com preparándose para desempaquetar ... /Chef_14.13.11-1_amd64.Deb ... Ubuntubox3.com desempaquetando chef (14.13.11-1) ... Ubuntubox3.com configurando chef (14.13.11-1) ... Ubuntubox3.com gracias por instalar chef infra cliente! Para obtener ayuda para comenzar, visite https: // aprender.cocinero.io ubuntubox3.com Comenzar la primera ejecución del cliente Chef ... Ubuntubox3.com iniciando el cliente chef, versión 14.13.11 Ubuntubox3.com resolviendo libros de cocina para la lista de ejecución: [] Ubuntubox3.com sincronizando libros de cocina: Ubuntubox3.com instalando gemas de libros de cocina: ubuntubox3.com compilando libros de cocina ... Ubuntubox3.com [2019-06-03T14: 01: 44+04: 00] Warn: Node Chef-Client-Node tiene una lista de ejecución vacía. Ubuntubox3.com converging 0 recursos Ubuntubox3.com ubuntubox3.COM CORRY HANDLERS: UBUNTUBOX3.Los manejadores de corredores completan Ubuntubox3.COM Chef Client terminado, 0/0 recursos actualizados en 05 segundos Confirme que el nodo se ha arrancado en enumerar los nodos del cliente: root@Ubuntubox2: ~/Chef-Repo/.cocinero# 

Confirme que el nodo se haya arrancado con éxito al enumerar los nodos:

root@ubuntubox2: ~/chef-repo/.Chef# Knode Node List Root Chef-Client-Node Root@Ubuntubox2: ~/Chef-Repo/.Chef# Knife Node Show Chef-Client-Node Nombre del nodo: Chef-Client-Node Environmento: _default fqdn: Ubuntubox3.com ip: 192.168.1.107 Lista de ejecución: Roles: Recetas: Plataforma: Ubuntu 18.04 etiquetas: 

Conclusión

En este artículo detallado, aprendimos sobre la herramienta de administración de configuración de Chef con su comprensión básica y descripción general de sus componentes con configuraciones de instalación y configuración. Puede obtener más información sobre Chef visitando el sitio web de Chef I.mi. https: // www.cocinero.IO/

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Mastering Bash Script Loops
  • Bucles anidados en guiones Bash
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Cosas para instalar en Ubuntu 22.04
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??
  • Ubuntu 20.04 Guía