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

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

Las recetas son aplicaciones de Ruby que definen la configuración de un sistema. Instalan paquetes, crean archivos de configuración a partir de plantillas, ejecutan comandos shell, crean archivos y directorios, etc. Por lo general, haces que AWS OpsWorks Stacks ejecute las recetas automáticamente cuando se produce un evento del ciclo de vida en la instancia, pero también puedes ejecutarlas de forma explícita en cualquier momento mediante el comando Execute Recipes stack. Para obtener más información, consulte Acerca de las recetas.

Normalmente, una receta está compuesta por muchos recursos, cada uno de los cuales representa el estado deseado de un aspecto del sistema. Cada recurso incluye un conjunto de atributos que define el estado deseado y especifica la acción que se debe llevar a cabo. Chef asocia cada recurso a un proveedor adecuado que realiza la acción. Para obtener más información, consulte Referencia de recursos y proveedores.

Un recurso package le ayuda a administrar paquetes de software en instancias de Linux. En el siguiente ejemplo se instala el paquete de Apache.

... package 'apache2' do case node[:platform] when 'centos','redhat','fedora','amazon' package_name 'httpd' when 'debian','ubuntu' package_name 'apache2' end action :install end ...

Chef utiliza el proveedor de paquetes adecuado para la plataforma. Los atributos de recurso a menudo solo asignan un valor, pero puede utilizar las operaciones lógicas de Ruby para realizar asignaciones condicionales. El ejemplo utiliza un operador case que utiliza node[:platform] para identificar el sistema operativo de la instancia y que define el atributo package_name en consecuencia. Puede utilizar la sintaxis de nodo estándar de Chef para insertar atributos en una receta para que Chef los sustituya por el valor asociado. Puede utilizar cualquier atributo del objeto de nodo, no solo los atributos del libro de recetas.

Tras determinar el nombre del paquete apropiado, el segmento del código termina con una acción install que instala el paquete. Otras acciones de este recurso incluyen upgrade y remove. Para obtener más información, consulte paquete.

Suele resultar útil para dividir tareas de instalación y configuración complejas en una o varias subtareas, cada una implementada como una receta independiente, y hacer que la receta principal las ejecute en el momento oportuno. El siguiente ejemplo muestra la línea de código que sigue al ejemplo anterior:

include_recipe 'apache2::service'

Para que una receta ejecute una receta secundaria, utilice la palabra clave include_recipe seguida del nombre de la receta. Las recetas se identifican mediante la utilización de la sintaxis CookbookName::RecipeName estándar de Chef, donde RecipeName omite la extensión .rb.

nota

Una declaración include_recipe ejecuta la receta de forma efectiva en ese momento en la receta principal. Sin embargo, lo que realmente ocurre es que Chef sustituye cada declaración include_recipe de Chef por el código de la receta especificada antes de ejecutar la receta principal.

Un recurso directory representa un directorio, como el que debe contener un paquete de archivos. El siguiente recurso, default.rb, crea un directorio de registro de Linux.

directory node[:apache][:log_dir] do mode 0755 action :create end

El directorio del registro se define en uno de los archivos de atributos del libro de recetas. El recurso especifica que el modo del directorio es 0755 y utiliza una acción create para crearlo. Para obtener más información, consulte directorio. También puede utilizar este recurso en instancias de Windows.

El recurso execute representa comandos, como comandos shell o scripts. El siguiente ejemplo genera archivos module.load.

execute 'generate-module-list' do if node[:kernel][:machine] == 'x86_64' libdir = 'lib64' else libdir = 'lib' end command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available" action :run end

El recurso determina en primer lugar el tipo de CPU. [:kernel][:machine] es otro de los atributos automáticos que Chef genera para representar diferentes propiedades del sistema, el tipo de CPU en este caso. A continuación, especifica el comando, un script Perl y utiliza una acción run para ejecutar el script, que genera los archivos module.load. Para obtener más información, consulte ejecutar.

Un recurso de template representa un archivo, generalmente un archivo de configuración, que se genera a partir de uno de los archivos de plantilla del libro de recetas. El siguiente ejemplo crea un archivo de configuración httpd.conf a partir de la plantilla apache2.conf.erb de la que se habló en Plantillas.

template 'apache2.conf' do case node[:platform] when 'centos','redhat','fedora','amazon' path "#{node[:apache][:dir]}/conf/httpd.conf" when 'debian','ubuntu' path "#{node[:apache][:dir]}/apache2.conf" end source 'apache2.conf.erb' owner 'root' group 'root' mode 0644 notifies :restart, resources(:service => 'apache2') end

El recurso determina el nombre y la ubicación del archivo generado en función del sistema operativo de la instancia. A continuación, especifica apache2.conf.erb como la plantilla que se va a utilizar para generar el archivo y establece su propietario, grupo y modo. Ejecuta la acción notify para solicitar al recurso service, que representa al servidor de Apache, que reinicie el servidor. Para obtener más información, consulte plantilla.