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
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 Chefchef
.
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.
-
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
-
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 queserver-app
dependa del libro de recetasjava
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'
-
Edite el archivo
metadata.rb
para añadir la dependencia. Guarde los cambios y cierre el archivo.depends 'java' , '~> 1.50.0'
-
Cambie al directorio del libro de recetas
server-app
que Chef le ha creado y, a continuación, ejecute el comandopackage
para crear un archivotar
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 directorioserver-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
-
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
-
En AWS OpsWorks Stacks, modifica tu pila para usar el paquete que has subido como fuente del libro de cocina.
-
Establezca la configuración Use custom Chef cookbooks (Utilizar libros de recetas de Chef personalizados) en Yes (Sí).
-
Establezca Repository type (Tipo de repositorio) en S3 Archive (Archivo S3).
-
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
-
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.
-
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
-
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
-
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.
-
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.
-
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"
-
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
-
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.
-
Linux Chef 12 con
Berkshelf en los foros AWS OpsWorks -
Berkshelf en Chef 12 en los foros
AWS OpsWorks -
Instalación de libros de recetas personalizados en esta guía
-
Repositorios de libros de recetas en esta guía