

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
<a name="gettingstarted-cookbooks-conditional-logic"></a>

**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](https://repost.aws/) o a través de Premium [AWS Support](https://aws.amazon.com/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](https://docs.chef.io/dsl_recipe.html#if-statements) y [Instrucciones case](https://docs.chef.io/dsl_recipe.html#case-statements).

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
   ```

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

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

1. Siga el procedimiento descrito en [Paso 5: Actualizar el libro de recetas en la instancia y ejecutar la receta](gettingstarted-cookbooks-copy-cookbook.md) 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\$1cookbook\$1demo::conditional\$1logic**. 

**Para probar la receta**

1. Mientras se muestra la página **Running command execute\$1recipes (Ejecutando comando execute\$1recipes)** de los procedimientos anteriores, en **cookbooks-demo1**, en **Log (Registro)**, elija **show (mostrar)**. Se muestra la página del registro **execute\$1recipes**.

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

1. 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](gettingstarted-cookbooks-community-cookbooks.md), actualizará el libro de recetas para utilizar la funcionalidad de un libro de recetas externo proporcionado por la comunidad de Chef.