Ejemplo 1: Instalación de paquetes - 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.

Ejemplo 1: Instalación de paquetes

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.

La instalación de paquetes suele ser uno de los usos que se da con más frecuencia a las recetas y, según el paquete, puede ser bastante sencillo. Por ejemplo, la siguiente receta instala Git en un sistema Linux.

package 'git' do action :install end

El recurso package se encarga de gestionar la instalación de paquetes. En este ejemplo, no es necesario especificar ningún atributo. El nombre del recurso es el valor predeterminado del atributo package_name que identifica el paquete. La acción install indica al proveedor que debe instalar el paquete. Puede simplificar aún más el código omitiendo install, que es la acción predeterminada del recurso package. Cuando ejecuta la receta, Chef utiliza el proveedor adecuado para instalar el paquete. En el sistema Ubuntu que va a utilizar para el ejemplo, el proveedor instala Git llamando a apt-get.

nota

Para instalar software en un sistema Windows debe seguirse otro procedimiento algo diferente. Para obtener más información, consulte Instalación de software de Windows.

Si desea utilizar Test Kitchen para ejecutar esta receta en Vagrant, primero debe configurar un libro de recetas e inicializar y configurar Test Kitchen. El procedimiento siguiente se aplica en un sistema Linux, pero es prácticamente el mismo para sistemas Windows y Macintosh. Primero abra una ventana del terminal; todos los ejemplos de este capítulo utilizan herramientas de línea de comandos.

Para preparar el libro de recetas
  1. En el directorio principal, cree un subdirectorio denominado opsworks_cookbooks que contendrá todos los libros de recetas de este capítulo. A continuación, cree un subdirectorio para este libro de recetas denominado installpkg y desplácese hasta él.

  2. En installpkg, cree un archivo denominado metadata.rb que contenga el código siguiente.

    name "installpkg" version "0.1.0"

    Para facilitar su comprensión, los ejemplos de este capítulo solo indican el nombre y la versión del libro de recetas, pero metadata.rb puede contener varios metadatos de libro de recetas. Para obtener más información, consulte Acerca de los metadatos de libros de recetas.

    nota

    Compruebe que metadata.rb esté creado antes de inicializar Test Kitchen, ya que esta herramienta utiliza los datos para crear el archivo de configuración predeterminado.

  3. En installpkg, ejecute kitchen init, que inicializa Test Kitchen e instala el controlador Vagrant predeterminado.

  4. El comando kitchen init crea un archivo de configuración YAML en installpkg denominado .kitchen.yml. Abra el archivo en el editor de texto que prefiera. El archivo .kitchen.yml tiene una sección platforms que especifica en qué sistemas deben ejecutarse las recetas. Test Kitchen crea una instancia y ejecuta las recetas específicas en cada plataforma.

    nota

    De forma predeterminada, Test Kitchen ejecuta las recetas en una plataforma a la vez. Si añade un argumento -p a cualquier comando que cree una instancia, Test Kitchen ejecutará las recetas en todas las plataformas, en paralelo.

    Para este ejemplo, basta con una única plataforma; así que edite .kitchen.yml para eliminar la plataforma centos-6.4. El archivo .kitchen.yml debe tener un aspecto similar al siguiente:

    --- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[installpkg::default] attributes:

    Test Kitchen solo ejecuta las recetas que se encuentran en la lista de ejecución .kitchen.yml. Las recetas se identifican mediante el formato [cookbook_name::recipe_name], donde recipe_name omite la extensión .rb. Al principio, la lista de ejecución .kitchen.yml contiene la receta predeterminada del libro de recetas, installpkg::default. Es la receta que va a implementar, por lo que no necesitará modificar la lista de ejecución.

  5. Cree un subdirectorio de installpkg llamado recipes.

    Si un libro de recetas contiene recetas, como suele ser el caso, estas deben encontrarse en el subdirectorio recipes.

Ahora puede añadir la receta al libro de recetas y usar Test Kitchen para ejecutarla en una instancia.

Para ejecutar la receta
  1. Cree un archivo denominado default.rb que contenga el código de ejemplo de instalación de Git del principio de la sección y guárdelo en el subdirectorio recipes.

  2. En el directorio de installpkg, ejecute kitchen converge. Este comando comienza una nueva instancia de Ubuntu en Vagrant, copia los libros de recetas en la instancia y comienza una ejecución de Chef para ejecutar las recetas en la lista de ejecución .kitchen.yml.

  3. Para verificar que la receta se haya realizado correctamente, ejecute kitchen login, que abre una conexión SSH a la instancia. A continuación, ejecute git --version para verificar que Git se haya instalado correctamente. Para volver a la estación de trabajo, ejecute exit.

  4. Cuando haya terminado, ejecute kitchen destroy para cerrar la instancia. En el ejemplo siguiente se utiliza otro libro de recetas.

Este ejemplo era un buen punto de partida, pero era demasiado sencillo. La instalación de otros paquetes puede ser más compleja; en dicho caso, puede que necesite ejecutar algunas de las operaciones siguientes:

  • Crear y configurar un usuario.

  • Crear uno o varios directorios de datos, registros, etc.

  • Instalar uno o varios archivos de configuración.

  • Especificar otro nombre de paquete u otros valores de atributos para sistemas operativos diferentes.

  • Iniciar un servicio y después reiniciarlo cuando sea necesario.

En los ejemplos siguientes se describe cómo afrontar estos problemas, junto con algunas otras operaciones útiles.