Añada nodos automáticamente en AWS OpsWorks for Chef Automate - 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.

Añada nodos automáticamente en AWS OpsWorks for Chef Automate

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.

En este tema se describe cómo añadir nodos de Amazon Elastic Compute Cloud (Amazon EC2) al servidor de Chef automáticamente. En el código incluido en el Starter Kit, se muestra cómo se agregan nodos automáticamente mediante el método desatendido. El método recomendado para establecer una asociación desatendida (o automática) de nuevos nodos consiste en configurar el libro de recetas Client de Chef. Puede utilizar el script userdata del Starter Kit y cambiar la sección run_list del script userdata o su Policyfile.rb con los libros de recetas que desee aplicar a los nodos. Antes de ejecutar el agente chef-client, cargue el libro de recetas del cliente de Chef en el servidor y, a continuación, instale el agente chef-client en modo de servicio con un rol HTTPD, por ejemplo, tal como se muestra en el comando de ejemplo siguiente.

chef-client -r "chef-client,role[httpd]"

Para comunicarse con el servidor de Chef, el software del agente chef-client debe obtener acceso a la clave pública del nodo cliente. Puede generar un par de claves público-privadas en Amazon EC2 y, a continuación, pasar la clave pública a la llamada a AWS OpsWorks associate-node la API con el nombre del nodo. El script que se incluye en el Starter Kit recopila automáticamente el nombre de la organización, el nombre del servidor y el punto de enlace del servidor. De este modo, garantizará que el nodo está asociado con el servidor de Chef y que el agente de software chef-client que se ejecuta en el nodo puede comunicarse con el servidor si coincide la clave privada.

La versión mínima de chef-client que se admite en los nodos asociados a un servidor de AWS OpsWorks for Chef Automate es la 13.x. Se recomienda ejecutar la versión estable más reciente. chef-client

Para obtener información sobre cómo desasociar un nodo, consulta Desasociar un nodo de un servidor AWS OpsWorks for Chef Automate esta guía y la documentación disassociate-nodede la AWS OpsWorks for Chef Automate API.

Sistemas operativos compatibles

Para obtener la lista de los sistemas operativos compatibles con los nodos, consulte el sitio web de Chef.

Paso 1: Crear un rol de IAM para usarlo como perfil de instancia

Cree una función AWS Identity and Access Management (de IAM) para utilizarla como perfil de instancia de EC2 y adjunte la siguiente política a la función de IAM. Esta política permite al API de AWS OpsWorks for Chef Automate (opsworks-cm) comunicarse con la instancia EC2 durante el registro del nodo. Para obtener más información acerca de los perfiles de instancia, consulte Uso de perfiles de instancia en la documentación de Amazon EC2. Para obtener información sobre cómo crear un rol de IAM, consulte Creating an IAM Role in the Console en la documentación de Amazon EC2.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "opsworks-cm:AssociateNode", "opsworks-cm:DescribeNodeAssociationStatus", ], "Resource": "*", "Effect": "Allow" } ] }

AWS OpsWorks proporciona una AWS CloudFormation plantilla que puede utilizar para crear el rol de IAM con la declaración de política anterior. El siguiente AWS CLI comando crea el rol de perfil de instancia automáticamente mediante esta plantilla. Puede omitir el --region parámetro si quiere crear la nueva AWS CloudFormation pila en la región predeterminada.

aws cloudformation --region region ID create-stack --stack-name myChefAutomateinstanceprofile --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-nodes-roles.yaml --capabilities CAPABILITY_IAM

Paso 2: Instalar el libro de recetas del cliente Chef

Si aún no lo ha hecho, siga los pasos que se indican en (Procedimiento alternativo) Uso de Berkshelf para obtener libros de recetas de un origen remoto para asegurarse de que el archivo Berksfile o el archivo Policyfile.rb hace referencia al libro de recetas Client de Chef e instala dicho libro.

Paso 3: Crear instancias usando un script de asociación desatendida

  1. Para crear instancias de EC2, puede copiar el userdata script del kit de inicio a la userdata sección de instrucciones de las instancias de EC2, a las configuraciones de lanzamiento de grupos de Amazon EC2 Auto Scaling o a una plantilla. AWS CloudFormation Para obtener más información sobre la adición de scripts a los datos de usuario, consulte Ejecución de comandos en su instancia de Linux en el lanzamiento en la documentación de Amazon EC2.

    Este script ejecuta el comando opsworks-cm de la associate-nodeAPI para asociar un nuevo nodo con el servidor de Chef.

    De forma predeterminada, el nombre del nuevo nodo registrado es el ID de la instancia, pero puede cambiarlo modificando el valor de la variable NODE_NAME en el script userdata. Dado que cambiar el nombre de la organización en la interfaz de usuario de la consola de Chef no es posible por el momento, deje CHEF_AUTOMATE_ORGANIZATION establecido en default.

  2. Siga el procedimiento de la sección Lanzamiento de una instancia en la documentación de EC2, con las modificaciones que se indican aquí. En el asistente de lanzamiento de instancias EC2, elija una AMI de Amazon Linux.

  3. En la página Configure Instance Details (Configuración de los detalles de la instancia), seleccione la función que creó en Paso 1: Crear un rol de IAM para usarlo como perfil de instancia como su función de IAM.

  4. En el área Advanced Details (Detalles avanzados), cargue el script userdata.sh que creó con anterioridad en este procedimiento.

  5. No se requieren cambios en la página Add Storage (Añadir almacenamiento). Acceda a Add Tags (Añadir etiquetas).

  6. En la página Configure Security Group (Configurar grupo de seguridad), elija Add Rule (Añadir regla) y, a continuación, elija el tipo HTTP para abrir los puertos número 443 y 80 del servidor web Apache de este ejemplo.

  7. Elija Review and Launch (Revisar y lanzar) y, a continuación, elija Launch (Lanzar). Cuando el nuevo nodo se inicia, aplica las configuraciones especificadas por las recetas que se hayan especificado en el parámetro RUN_LIST.

  8. Opcional: Si ha añadido el libro de recetas nginx a la lista de ejecución, al abrir la página web vinculada a la DNS pública del nuevo nodo, aparecerá un sitio web hospedado por el servidor web nginx.

Otros métodos para automatizar la repetición de las ejecuciones de chef-client

Aunque es más difícil de conseguir y no se recomienda, puede ejecutar el script de este tema únicamente como parte de los datos de usuario de una instancia independiente, utilizar una AWS CloudFormation plantilla para añadirlo a los datos de usuario de la nueva instancia, configurar un cron trabajo para que ejecute el script con regularidad o chef-client ejecutarlo dentro de un servicio. No obstante, recomendamos el método del libro de recetas Client de Chef, ya que las demás técnicas de automatización presentan las desventajas siguientes:

Para obtener una lista completa de los parámetros que puede proporcionar a chef-client, consulte la documentación de Chef.

Las siguientes publicaciones de AWS blog ofrecen más información sobre la asociación automática de nodos con su servidor Chef Automate, mediante grupos de Auto Scaling o dentro de varias cuentas.