Paso 15: Actualizar el libro de recetas para utilizar lógica condicional - 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.

Paso 15: Actualizar el libro de recetas para utilizar lógica condicional

importante

La AWS OpsWorks Stacks El 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 tiene alguna duda sobre la migración, póngase en contacto con el AWS Support Equipo en AWS Re:post o mediante AWS Premium Support.

Ahora actualice el libro de recetas añadiendo una receta que utiliza la lógica condicional, una técnica que ejecuta el código solo si se cumplen determinadas condiciones. Para obtener más información, consulte Instrucciones if y Instrucciones case.

Esta receta hace dos cosas según el contenido de la bolsa de datos: muestra un mensaje en el registro donde identifica el sistema operativo en el que la instancia se ejecuta y, solo si el sistema operativo es Linux, instala un paquete utilizando el administrador de paquete correcto para la distribución concreta de Linux. Este paquete se denomina tree; es una aplicación sencilla para visualizar las listas de directorios.

Para actualizar el libro de recetas en la instancia y ejecutar la nueva receta
  1. En la estación de trabajo local, en el directorio recipes del directorio opsworks_cookbook_demo directory, cree un archivo llamado conditional_logic.rb que contenga el siguiente código:

    instance = search("aws_opsworks_instance").first os = instance["os"] if os == "Red Hat Enterprise Linux 7" Chef::Log.info("********** Operating system is Red Hat Enterprise Linux. **********") elsif os == "Ubuntu 14.04 LTS" || os == "Ubuntu 16.04 LTS" || os == "Ubuntu 18.04 LTS" Chef::Log.info("********** Operating system is Ubuntu. **********") elsif os == "Microsoft Windows Server 2012 R2 Base" Chef::Log.info("********** Operating system is Windows. **********") elsif os == "Amazon Linux 2015.03" || os == "Amazon Linux 2015.09" || os == "Amazon Linux 2016.03" || os == "Amazon Linux 2016.09" || os == "Amazon Linux 2017.03" || os == "Amazon Linux 2017.09" || os == "Amazon Linux 2018.03" || os == "Amazon Linux 2" Chef::Log.info("********** Operating system is Amazon Linux. **********") elsif os == "CentOS Linux 7" Chef::Log.info("********** Operating system is CentOS 7. **********") else Chef::Log.info("********** Cannot determine operating system. **********") end case os when "Ubuntu 14.04 LTS", "Ubuntu 16.04 LTS", "Ubuntu 18.04 LTS" apt_package "Install a package with apt-get" do package_name "tree" end when "Amazon Linux 2015.03", "Amazon Linux 2015.09", "Amazon Linux 2016.03", "Amazon Linux 2016.09", "Amazon Linux 2017.03", "Amazon Linux 2017.09", "Amazon Linux 2018.03", "Amazon Linux 2", "Red Hat Enterprise Linux 7", "CentOS Linux 7" yum_package "Install a package with yum" do package_name "tree" end else Chef::Log.info("********** Cannot determine operating system type, or operating system is not Linux. Package not installed. **********") end
  2. En la línea de comandos o terminal, utilice el comando tar para crear una nueva versión del archivo opsworks_cookbook_demo.tar.gz que contenga el directorio opsworks_cookbook_demo y su contenido actualizado.

  3. Cargue el archivo opsworks_cookbook_demo.tar.gz actualizado en el bucket de S3.

  4. Siga el procedimiento descrito en Paso 5: Actualizar el libro de recetas en la instancia y ejecutar la receta para actualizar el libro de recetas en la instancia y ejecutar la receta. En el procedimiento "To run the recipe" para Recipes to execute (Recetas para ejecutar), escriba opsworks_cookbook_demo::conditional_logic.

Para probar la receta
  1. Mientras se muestra la página Running command execute_recipes (Ejecutando comando execute_recipes) de los procedimientos anteriores, en cookbooks-demo1, en Log (Registro), elija show (mostrar). Se muestra la página del registro execute_recipes.

  2. Desplácese hacia abajo en el registro y busque una entrada con un aspecto similar al siguiente:

    [2015-11-16T19:59:05+00:00] INFO: ********** Operating system is Amazon Linux. **********

    Dado que el sistema operativo de la instancia es Amazon Linux 2016.09, solo la entrada anterior (de las cinco posibles entradas en el código de la receta) se mostrará en el registro.

  3. Si el sistema operativo es Linux, la receta instala el paquete tree. Para ver el contenido de un directorio, escriba tree en el símbolo del sistema desde el directorio deseado o con la ruta del directorio deseado (por ejemplo, tree /var/chef/runs).

En el paso siguiente, actualizará el libro de recetas para utilizar la funcionalidad de un libro de recetas externo proporcionado por la comunidad de Chef.