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
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
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
-
En la estación de trabajo local, en el directorio
recipes
del directorioopsworks_cookbook_demo directory
, cree un archivo llamadoconditional_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
-
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 directorioopsworks_cookbook_demo
y su contenido actualizado. -
Cargue el archivo
opsworks_cookbook_demo.tar.gz
actualizado en el bucket de S3. -
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
-
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.
-
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.
-
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.