Empaquetado local de las dependencias del libro de recetas - 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.

Empaquetado local de las dependencias del libro de recetas

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 existentes. 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.

Puede utilizar Berkshelf para empaquetar localmente las dependencias del libro de recetas, cargar el paquete en Amazon S3 y modificar la pila para utilizar el paquete en Amazon S3 como origen 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?.

En los siguientes tutoriales, se describe cómo empaquetar previamente tus libros de cocina y sus dependencias en un archivo.zip y, a continuación, usar el archivo.zip como fuente de libros de cocina para las instancias de Linux en Stacks. AWS OpsWorks En el primer tutorial se describe cómo empaquetar un libro de recetas. En el segundo tutorial se describe cómo empaquetar varios libros de recetas.

Antes de comenzar, instale el kit de desarrollo de Chef (también conocido como Chef DK), que está formado por una serie de herramientas creadas por la comunidad de Chef. Necesitará este kit para utilizar la herramienta de línea de comandos chef.

Empaquetado local de las dependencias de Chef 12

En Chef 12 para Linux, Berkshelf ya no se instala de forma predeterminada en las instancias de las pilas. Le recomendamos que instale y utilice Berkshelf en un equipo de desarrollo local para empaquetar las dependencias de los libros de recetas localmente. Cargue el paquete con las dependencias incluidas en Amazon S3. Por último, modifique la pila de Chef 12 para Linux para que use el paquete cargado como origen de libro de recetas. Tenga en cuenta las siguientes diferencias cuando empaquete libros de recetas de Chef 12.

  1. En el equipo local, cree un libro de recetas mediante la ejecución de la herramienta de línea de comandos chef.

    chef generate cookbook "server-app"

    Este comando crea un libro de recetas, un Berksfile, un archivo metadata.rb y un directorio de recetas y los coloca en una carpeta que tiene el mismo nombre que el libro de recetas. En el siguiente ejemplo se muestra la estructura de lo que se crea.

    server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
  2. En un editor de texto edite el Berksfile para vincular a los libros de recetas de los que dependerá el libro de receta server-app. En nuestro ejemplo, queremos que server-app dependa del libro de recetas java del Chef Supermarket. Especificamos la versión 1.50.0 o una versión secundaria más reciente, pero puede introducir cualquier versión publicada entre comillas simples. Guarde los cambios y cierre el archivo.

    source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
  3. Edite el archivo metadata.rb para añadir la dependencia. Guarde los cambios y cierre el archivo.

    depends 'java' , '~> 1.50.0'
  4. Cambie al directorio del libro de recetas server-app que Chef le ha creado y, a continuación, ejecute el comando package para crear un archivo tar del libro de recetas. Si va a empaquetar varios libros de recetas, debe ejecutar este comando en el directorio raíz en el que todos los libros de recetas se almacenan. Para empaquetar un solo libro de recetas, ejecute este comando en el nivel de directorio de libro de recetas. En este ejemplo, ejecutamos este comando en el directorio server-app.

    berks package cookbooks.tar.gz

    La salida se parece a la siguiente. El archivo tar.gz se crea en el directorio local.

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  5. En el AWS CLI, sube el paquete que acabas de crear a Amazon S3. Anote la nueva URL del paquete de recetas después de haberlo cargado en S3. Necesitará esta URL para la configuración de la pila.

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    La salida se parece a la siguiente.

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  6. En AWS OpsWorks Stacks, modifica tu pila para usar el paquete que has subido como fuente del libro de cocina.

    1. Establezca la configuración Use custom Chef cookbooks (Utilizar libros de recetas de Chef personalizados) en Yes (Sí).

    2. Establezca Repository type (Tipo de repositorio) en S3 Archive (Archivo S3).

    3. En Repository URL (URL de repositorio), pegue la URL del paquete de recetas que ha cargado en el paso 5.

    Guarde los cambios realizados en la pila.

Empaquetado local de dependencias de un libro de recetas

  1. En el equipo local, cree un libro de recetas con la herramienta de línea de comandos chef:

    chef generate cookbook "server-app"

    Este comando crea un libro de recetas y un archivo Berksfile, y los pone en una carpeta que tiene el mismo nombre que el libro de recetas.

  2. Cambie al directorio de libro de recetas que Chef le ha creado y empaquete todo ejecutando el siguiente comando:

    berks package cookbooks.tar.gz

    El resultado tendrá este aspecto:

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  3. En el AWS CLI, cargue el paquete que acaba de crear en Amazon S3:

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    El resultado tendrá este aspecto:

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  4. En AWS OpsWorks Stacks, modifica tu pila para usar el paquete que has subido como fuente del libro de cocina.

Empaquetado local de dependencias de varios libros de recetas

En este ejemplo se crean dos libros de recetas y se empaquetan sus dependencias.

  1. En el equipo local, ejecute los siguientes comandos chef para generar dos libros de recetas:

    chef generate cookbook "server-app" chef generate cookbook "server-utils"

    En este ejemplo, como el libro de recetas server-app realiza configuraciones Java, tenemos que añadir una dependencia de Java.

  2. Edite server-app/metadata.rb para añadir una dependencia en el libro de recetas Java de la comunidad:

    maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
  3. Indique a Berkshelf qué debe empaquetar editando el archivo Berksfile en el directorio raíz de los libro de recetas, tal y como se indica a continuación:

    source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"

    Ahora, la estructura de archivos tiene el aspecto siguiente:

    .. └── Berksfile ├── server-app └── server-utils
  4. Por último, crea un paquete zip, súbelo a Amazon S3 y modifica tu pila de AWS OpsWorks Stacks para usar la nueva fuente del libro de cocina. Para ello, realice los pasos del 2 al 4 en Empaquetado local de dependencias de un libro de recetas.

Recursos adicionales de

Para obtener más información sobre cómo empaquetar dependencias de libros de recetas, consulte lo siguiente.