Uso de la búsqueda en una pila de Linux - 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.

Uso de la búsqueda en una pila de Linux

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

Este ejemplo se basa en una instancia de Linux con un único servidor de aplicaciones PHP. Utiliza Chef para obtener la dirección IP pública del servidor y la guarda en un archivo en el directorio /tmp. Recupera básicamente la misma información del objeto de nodo que Obtención directa de los valores de atributo , pero el código es mucho más sencillo y no depende de los detalles de la estructura de los atributos de configuración e implementación.

A continuación, se resume brevemente cómo crear la pila para este ejemplo. Para obtener más información, consulte Crear una pila nueva.

nota

Si no has ejecutado antes una receta personalizada en una instancia de AWS OpsWorks Stacks, primero debes seguir el ejemplo. Ejecución de una receta en una instancia de Linux

Creación de una pila
  1. Abra la consola de AWS OpsWorks Stacks y haga clic en Add Stack (Añadir pila).

  2. Especifique las siguientes opciones de configuración, acepte los valores predeterminados del resto y, a continuación, haga clic en Add Stack (Añadir pila).

    • Nombre: SearchJSON

    • Clave SSH predeterminada: un par de claves de Amazon EC2

    Si necesita crear un par de claves de Amazon EC2, consulte Pares de claves de Amazon EC2. Tenga en cuenta que el par de claves debe pertenecer a la misma región de AWS que la instancia. En este ejemplo se utiliza la región Oeste de EE. UU. (Oregón).

  3. Haga clic en Agregar una capa y añada una capa del servidor de aplicaciones PHP a la pila con la configuración predeterminada.

  4. Añada una instancia de funcionamiento ininterrumpido con la configuración predeterminada a la capa e iníciela.

Para configurar el libro de recetas
  1. Cree un directorio dentro de opsworks_cookbooks llamado searchjson y ábralo.

  2. Cree un archivo metadata.rb con el siguiente contenido y guárdelo en opstest.

    name "searchjson" version "0.1.0"
  3. Cree un directorio recipes dentro de searchjson.

  4. Cree un archivo default.rb con la siguiente receta y guárdelo en el directorio recipes.

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    Las pilas de Linux solo son compatibles con el índice de búsqueda node. La receta utiliza este índice para obtener una lista de las instancias de la capa php-app. Como se sabe que la capa solo tiene una instancia, la receta simplemente asigna la primera a phpserver. Si la capa tiene varias instancias, puede enumerarlas para recuperar la información necesaria. Cada elemento de la lista es una tabla hash que contiene un conjunto de atributos de instancia. El atributo ip está establecido en la dirección IP pública de la instancia, de modo que puede representar esa dirección en el código de la receta como phpserver[:ip].

    Una vez que el mensaje se ha añadido al registro de Chef, la receta utiliza un recurso file para crear un archivo llamado ip_addresses. El atributo content se establece en una representación de cadena de phpserver[:ip]. Cuando Chef crea ip_addresses, añade esa cadena al archivo.

  5. Cree un archivo .zip de opsworks_cookbooks, cárguelo en un bucket de Amazon S3, publíquelo y anote la URL del archivo. Para obtener más información sobre los repositorios de libros de recetas, consulte Repositorios de libros de recetas.

    El contenido entregado a los buckets de Amazon S3 puede contener contenido del cliente. Para obtener más información sobre la eliminación de información confidencial, consulte ¿Cómo puedo vaciar un bucket de S3? o ¿Cómo elimino un bucket de S3?.

Ahora puede instalar el libro de recetas y ejecutar la receta.

Para ejecutar la receta
  1. Edite la pila para habilitar los libros de recetas personalizados y especifique las siguientes opciones de configuración.

    • Tipo de repositorio: Archivo HTTP

    • URL de repositorio: la URL del archivo del libro de recetas que anotó previamente.

    No modifique los valores predeterminados del resto de opciones y haga clic en Save (Guardar) para actualizar la configuración de la pila.

  2. Edita la configuración de capa personalizada y searchjson::defaultasígnala al evento de configuración de la capa. AWS OpsWorks Stacks ejecutará la receta una vez que se inicie la instancia o si activas el evento de configuración de forma explícita.

  3. Ejecute el comando de pila Update Custom Cookbooks, que instala la versión actual del repositorio de libros de recetas personalizados en las instancias de la pila. Si existiera una versión anterior del repositorio, este comando la sobrescribe.

  4. Para ejecutar la receta, ejecute el comando de pila Setup (Configuración), que desencadena un evento Setup en la instancia y ejecuta searchjson::default. Deje Running command setup page (Página de configuración de comando de ejecución) abierta.

Una vez que la receta se haya ejecutado correctamente, podrá verificarla.

Para verificar searchjson
  1. El primer paso es revisar el registro de Chef en busca del evento Setup más reciente. En Running command setup page (Página de configuración de comando de ejecución), haga clic en show (mostrar) en la columna Log (Registro) de la instancia de php-app1 para mostrar el registro. Desplácese hacia abajo para encontrar mensaje del registro, casi a la mitad del archivo. Debería parecerse a lo siguiente.

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. Utilice SSH para iniciar sesión en la instancia y ver el contenido de /tmp, que debe incluir un archivo llamado ip_addresses que contiene la dirección IP.