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 7: Ejecución de comandos o scripts
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
Los recursos de Chef pueden gestionar una amplia variedad de tareas en una instancia, aunque a veces es preferible utilizar un comando de shell o un script. Por ejemplo, es posible que ya disponga de scripts que utilice para realizar determinadas tareas y es más fácil continuar usándolos en vez de implementar código de nuevo. En esta sección se muestra cómo ejecutar comandos o scripts en una instancia.
Ejecución de comandos
El recurso script
Primeros pasos
-
Dentro del directorio
opsworks_cookbooks, cree un directorio llamadoscripty ábralo. -
Añada un archivo
metadata.rbascriptcon el contenido siguiente.name "script" version "0.1.0" -
Inicialice y configure Test Kitchen, tal y como se describe en Ejemplo 1: Instalación de paquetes, y elimine CentOS de la lista
platforms. -
Dentro de
script, cree un directorio llamadorecipes.
Puede ejecutar comandos mediante el recurso script, pero Chef también admite un conjunto de versiones específicas de intérpretes de comandos del recurso que se llaman según el intérprete. En la siguiente receta se utiliza un recurso bash
bash "install_something" do user "root" cwd "/tmp" code <<-EOH touch somefile EOH not_if do File.exists?("/tmp/somefile") end end
El recurso bash está configurado como se indica a continuación.
-
Utiliza la acción predeterminada
run, que ejecuta los comandos en el bloquecode.Este ejemplo tiene un comando,
touch somefile, pero un bloquecodepuede llegar a contener varios comandos. -
El atributo
userespecifica el usuario que ejecuta el comando. -
El atributo
cwdespecifica el directorio de trabajo.En este ejemplo,
touchcrea un archivo en el directorio/tmp. -
El atributo de protección
not_ifindica al recurso que no ejecute ninguna acción si el archivo ya existe.
Para ejecutar la receta
-
Cree un archivo
default.rbque contenga el código de ejemplo anterior y guárdelo enrecipes. -
Ejecute
kitchen convergey, a continuación, inicie sesión en la instancia para comprobar que el archivo se encuentre en/tmp.
Ejecución de scripts
El recurso script es cómodo, especialmente si solo tiene que ejecutar uno o dos comandos, pero a menudo es preferible almacenar el script en un archivo y ejecutar el archivo. El recurso executescript del ejemplo anterior a fin de que utilice execute para ejecutar un script de shell sencillo. Es fácil ampliar el ejemplo a scripts más complejos u otros tipos de archivos ejecutables.
Para configurar el archivo de script
-
Añada un subdirectorio
filesascripty un subdirectoriodefaultafiles. -
Cree un archivo llamado
touchfileque contenga lo siguiente y añádalo afiles/default. En este ejemplo se utiliza una línea de intérprete Bash habitual, pero, si es necesario, puede sustituir el intérprete que trabaja para su entorno de shell.#!/usr/bin/env bash touch somefileEl archivo de script puede contener cualquier número de comandos. Para mayor comodidad, este script de ejemplo solo tiene un único comando
touch.
La receta siguiente ejecuta el script.
cookbook_file "/tmp/touchfile" do source "touchfile" mode 0755 end execute "touchfile" do user "root" cwd "/tmp" command "./touchfile" end
El recurso cookbook_file copia el archivo de script en /tmp y establece el modo para que el archivo sea ejecutable. A continuación, el recurso execute ejecuta el archivo de la siguiente manera:
-
El atributo
userespecifica el usuario del comando (rooten este ejemplo). -
El atributo
cwdespecifica el directorio de trabajo (/tmpen este ejemplo). -
El atributo
commandespecifica el script que se va a ejecutar (touchfileen este ejemplo), que se encuentra en el directorio de trabajo.
Para ejecutar la receta
-
Sustituya el código de
recipes/default.rbpor el ejemplo anterior. -
Ejecute
kitchen convergey, a continuación, inicie sesión en la instancia para verificar que/tmpahora contenga archivo de script con el modo establecido en 0755 ysomefile.
Cuando haya terminado, ejecute kitchen destroy para cerrar la instancia. En la siguiente sección se utiliza un libro de recetas nuevo.