Configurar el servidor de Chef con el kit de inicio - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar el servidor de Chef con el kit de inicio

importante

AWS OpsWorks para Chef Automate llegó al final de su vida útil el 5 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos que los clientes actuales migren a Chef SaaS o a una solución alternativa. Si tienes alguna pregunta, puedes ponerte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

Mientras que el proceso de creación del servidor de Chef sigue en curso, abra su página de propiedades en la consola de AWS OpsWorks for Chef Automate . La primera vez que trabaje con un servidor de Chef nuevo, la página de propiedades le pedirá que descargue dos elementos necesarios. Descargue estos elementos antes de que su servidor de Chef esté online; los botones de descarga no estarán disponibles cuando el servidor nuevo esté online.

AWS OpsWorks for Chef Automate nueva página de propiedades del servidor
  • Sign-in credentials for the Chef server (Credenciales de inicio de sesión para el servidor de Chef). Utilizará estas credenciales para iniciar sesión en el panel de control de Chef Automate, donde trabajará con las funciones premium de Chef Automate, como los escaneos de flujo de trabajo y cumplimiento. AWS OpsWorks no guarda estas credenciales; esta es la última vez que están disponibles para su visualización y descarga. Si es necesario, podrá cambiar la contraseña con estas credenciales después de iniciar sesión.

  • Starter Kit (Kit de inicio). El kit de inicio contiene un archivo README con ejemplos, un archivo de configuración knife.rb y una clave privada para el usuario principal o central. Cada vez que descarga el kit de inicio se genera un par de claves nuevo (y se reestablece la clave antigua).

Además de las credenciales que solo funcionan con el nuevo servidor, el archivo.zip del Starter Kit incluye un ejemplo sencillo de un repositorio de Chef que funciona con cualquier AWS OpsWorks for Chef Automate servidor. En el repositorio de Chef puede almacenar los libros de recetas, roles, archivos de configuración y otros elementos para administrar nodos con Chef. Le recomendamos que almacene este repositorio en un sistema de control de versiones, como, por ejemplo, Git, y lo trate como código fuente. Para obtener más información y ver ejemplos de cómo configurar un repositorio de Chef con seguimiento en Git, consulte About the chef-repo en la documentación de Chef.

Requisitos previos

  1. Aunque el proceso de creación del servidor siga en curso, descargue las credenciales de inicio de sesión para el servidor de Chef y guárdelas en una ubicación cómoda pero segura.

  2. Descargue el kit de inicio y descomprima su archivo.zip en el directorio de su espacio de trabajo. No comparta la clave privada del kit de inicio. Si otros usuarios administran del servidor de Chef, añádalos como administradores en el panel de Chef Automate en otro momento.

  3. Descargue e instale la estación de trabajo de Chef (antes conocido como Kit de desarollo de Chef o Chef DK) en el equipo que vaya a utilizar para administrar los nodos y el servidor de Chef. La knife utilidad forma parte de Chef Workstation. Si necesita ver las instrucciones, consulte Instalar Chef DK en el sitio web de Chef.

Explorar el contenido del Starter Kit

El Starter Kit contiene lo siguiente:

  • cookbooks/: un directorio para los libros de recetas que se van a crear. La carpeta cookbooks/ contiene el opsworks-webserver libro de cocina, un libro de cocina envoltorio que depende del libro de nginx cocina del sitio web Chef Supermarket. Policyfile.rb por defecto, Chef supermarket como fuente secundaria si las dependencias del libro de cocina no están disponibles en el cookbooks/ directorio.

  • Policyfile.rb: archivo de política basado en Ruby que define los libros de recetas, las dependencias y los atributos que van a constituir la política de los nodos.

  • userdata.sh y userdata.ps1: puede utilizar los archivos de datos del usuario para asociar los nodos automáticamente después de lanzar el servidor de Chef Automate. userdata.sh sirve para arrancar los nodos basados en Linux y userdata.ps1, para los nodos basados en Windows.

  • Berksfile: puede utilizar este archivo si prefiere utilizar comandos de berks y Berkshelf para cargar los libros de recetas y sus dependencias. En este tutorial, vamos a utilizar comandos de Chef y Policyfile.rb para cargar libros de recetas, dependencias y atributos.

  • README.md, archivo basado en Markdown que describe cómo se utiliza el Starter Kit para configurar el servidor de Chef Automate por primera vez.

  • .chef es un directorio oculto que contiene un archivo de configuración knife (knife.rb) y un archivo de claves de autenticación secretas (.pem).

    • .chef/knife.rb: archivo de configuración knife (knife.rb). El knife.rbarchivo está configurado para que las operaciones de las knifeherramientas de Chef se ejecuten en el AWS OpsWorks for Chef Automate servidor.

    • .chef/ca_certs/opsworks-cm-ca-2020-root.pem; clave privada SSL firmada por una entidad de certificación (CA) y proporcionada por AWS OpsWorks. Esta clave permite al servidor identificarse ante el agente cliente de Chef Infra en los nodos que administra el servidor.

Configuración del repositorio de Chef

Los repositorios de Chef contienen varios directorios. Cada directorio del Starter Kit contiene un archivo README que describe la finalidad del directorio y cómo utilizarlo para administrar los sistemas con Chef. Hay dos maneras de instalar libros de recetas en el servidor de Chef: ejecutar comandos knife o ejecutar un comando de Chef para cargar un archivo de política (Policyfile.rb) en el servidor donde se descargan e instalan los libros de recetas especificados. En este tutorial, se van a utilizar comandos de Chef y el archivo Policyfile.rb para instalar los libros de recetas en el servidor.

  1. Cree un directorio en el equipo local para guardar los libros de recetas; por ejemplo, chef-repo. Tras añadir libros de cocina, funciones y otros archivos a este repositorio, le recomendamos que los cargue o almacene en un sistema seguro y con control de versiones, como CodeCommit Git o Amazon S3.

  2. En el directorio chef-repo, cree los siguientes directorios:

    • cookbooks/ - Almacena libros de cocina.

    • roles/: almacena roles en formato .rb o .json.

    • environments/: almacena entornos en formato .rb o .json.

Uso de Policyfile.rb para obtener libros de recetas de un origen remoto

En esta sección, va a editar Policyfile.rb para especificar los libros de recetas. Después, ejecutará un comando de Chef para cargar el archivo en el servidor e instalar los libros de recetas.

  1. Consulte el archivo Policyfile.rb del Starter Kit. De forma predeterminada, Policyfile.rb contiene el libro de recetas encapsulador de opsworks-webserver, que depende del libro de recetas nginx disponible en el sitio web de Chef Supermarket. El libro de recetas nginx instala y configura un servidor web en los nodos administrados. También se especifica el libro de recetas de chef-client, que instala el agente de cliente de Chef Infra en los nodos administrados.

    Policyfile.rb también apunta al libro de recetas opcional Audit de Chef, que se puede utilizar para configurar los análisis de conformidad de los nodos. Para ver más información acerca de cómo configurar los análisis de conformidad y obtener resultados de conformidad sobre los nodos administrados, consulte Escaneos de conformidad en AWS OpsWorks for Chef Automate. Si no desea configurar la auditoría y los análisis de conformidad en este momento, elimine 'audit' de la sección run_list y no especifique los atributos del libro de recetas audit al final del archivo.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information about the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # The cookbooks directory is the preferred source for external cookbooks default_source :chef_repo, "cookbooks/" do |s| s.preferred_for "nginx", "windows", "chef-client", "yum-epel", "seven_zip", "build-essential", "mingw", "ohai", "audit", "logrotate", "cron" end # Alternative source default_source :supermarket # run_list: chef-client runs these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver', 'audit' # add 'ssh-hardening' to your runlist to fix compliance issues detected by the ssh-baseline profile # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver' # Policyfile defined attributes # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]

    A continuación, se muestra un ejemplo de Policyfile.rb sin los atributos ni el libro de recetas audit por si desea configurar únicamente el servidor web nginx en este momento.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information on the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # Where to find external cookbooks: default_source :supermarket # run_list: chef-client will run these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver' # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver'

    Si realiza cambios en Policyfile.rb, no olvide guardar el archivo.

  2. Descargue e instale los libros de recetas definidos en Policyfile.rb.

    chef install

    Todos los libros de recetas cuentan con varias versiones en el archivo metadata.rb. Cada vez que modifique un libro de recetas, debe aumentar la versión del libro de recetas que se encuentra en metadata.rb.

  3. Si ha decidido configurar los análisis de conformidad y mantener la información del libro de recetas audit en el archivo de política, inserte la política opsworks-demo en el servidor.

    chef push opsworks-demo
  4. Si ha realizado el paso 3, compruebe la instalación de la política. Ejecute el siguiente comando de la .

    chef show-policy

    Los resultados deberían ser similares a los siguientes:

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. Ahora, todo está listo para añadir o arrancar nodos en el servidor de Chef Automate. Si desea automatizar la asociación de los nodos, siga los pasos que se indican en Añada nodos automáticamente en AWS OpsWorks for Chef Automate. Si desea añadir los nodos de uno en uno, siga los pasos que se indican en Añada nodos de forma individual.

(Procedimiento alternativo) Uso de Berkshelf para obtener libros de recetas de un origen remoto

Berkshelf es una herramienta para administrar libros de recetas y sus dependencias. Si prefiere utilizar Berkshelf en lugar de Policyfile.rb para instalar libros de recetas en el almacenamiento local, utilice el procedimiento de esta sección en lugar del indicado en la sección anterior. Puede especificar los libros de recetas y las versiones que desea utilizar con el servidor de Chef y cargarlos. El Starter Kit contiene un archivo llamado Berksfile que puede utilizar para obtener una lista de los libros de recetas.

  1. Para comenzar, añada el libro de recetas chef-client en el Berksfile incluido. El libro de recetas chef-client configura el software del agente cliente de Chef Infra en cada uno de los nodos que se conectan al servidor de Chef Automate. Para obtener más información acerca de este libro de recetas, consulte Chef Client Cookbook en Chef Supermarket.

  2. Con un editor de texto, añada al Berksfile otro libro de recetas que instale una aplicación de servidor web; por ejemplo, el libro de recetas apache2, que instala el servidor web Apache. El Berksfile debería parecerse a lo siguiente.

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2'
  3. Descargue e instale los libros de recetas en el equipo local.

    berks install
  4. Cargue el libro de recetas en el servidor de Chef.

    En Linux, ejecute lo siguiente.

    SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2020-root.pem' berks upload

    En Windows, ejecute el siguiente comando de Chef Workstation en una sesión. PowerShell Antes de ejecutar el comando, asegúrese de configurar la política de ejecución en PowerShell . RemoteSigned chef shell-initAñádalo para que los comandos de la utilidad Chef Workstation estén disponibles para PowerShell.

    $env:SSL_CERT_FILE="ca_certs\opsworks-cm-ca-2020-root.pem" chef shell-init berks upload Remove-Item Env:\SSL_CERT_FILE
  5. Compruebe la instalación del libro de recetas. Para ello, consulte la lista de los libros de recetas que están disponibles actualmente en el servidor de Chef Automate. Puede hacerlo ejecutando el siguiente comando knife:

    Está listo para agregar nodos para administrarlos con el AWS OpsWorks for Chef Automate servidor.

    knife cookbook list

(Opcional) Configurar knife para trabajar con un dominio personalizado

Si el servidor de Chef Automate utiliza un dominio personalizado, es posible que deba agregar el certificado PEM de la CA raíz que firmó la cadena de certificados del servidor o el certificado PEM del servidor si el certificado es autofirmado. ca_certs es un subdirectorio en chef/ que contiene entidades emisoras de certificados (CA) de confianza de la utilidad knife de Chef.

Puede omitir esta sección si no está utilizando un dominio personalizado o si su certificado personalizado está firmado por una CA raíz de confianza de su sistema operativo. De lo contrario, configure knife para que confíe en su certificado SSL del servidor de Chef Automate, como se describe en los pasos siguientes.

  1. Ejecute el siguiente comando de la .

    knife ssl check

    Si los resultados son similares a los siguientes, omita el resto de este procedimiento y continúe con Añadir nodos para el servidor de Chef que se va a administrar.

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Si aparece un mensaje de error similar al siguiente, pase al siguiente paso.

    Connecting to host my-chef-automate-server.my-corp.com:443 ERROR: The SSL certificate of my-chef-automate-server.my-corp.com could not be verified. ...
  2. Ejecute knife ssl fetch para confiar en los certificados del servidor de AWS OpsWorks for Chef Automate . Alternativamente, puede copiar manualmente el certificado con formato de CA raíz de su servidor en el directorio que es el valor de trusted_certs_dir en la salida de knife ssl check. De forma predeterminada, este directorio se encuentra .chef/ca_certs/ en el Starter Kit. El resultado debe tener el siguiente aspecto:

    WARNING: Certificates from my-chef-automate-server.my-corp.com will be fetched and placed in your trusted_cert directory (/Users/username/starterkit/.chef/../.chef/ca_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 my-chef-automate-server in /Users/users/starterkit/.chef/../.chef/ca_certs/servv-aqtswxu20swzkjgz.crt Adding certificate for MyCorp_Root_CA in /Users/users/starterkit/.chef/../.chef/ca_certs/MyCorp_Root_CA.crt
  3. Vuelva a ejecutar knife ssl check. El resultado debe tener el siguiente aspecto:

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Está listo para usar knife con su servidor Chef Automate.