Rayder: Herramienta liviana para orquestar y organizar flujos de trabajo de línea de comandos

Rayder es una herramienta de línea de comandos diseñada para simplificar la orquestación y ejecución de flujos de trabajo. Le permite definir una serie de módulos en un archivo YAML, cada uno de los cuales consta de comandos para ejecutar.

Rayder le ayuda a automatizar procesos complejos, facilitando la optimización de módulos repetitivos y su ejecución en paralelo si los comandos no dependen unos de otros.

Instalación

Para instalar Rayder, asegúrese de tener Go (1.16 o superior) instalado en su sistema. Luego, ejecute el siguiente comando:

go install github.com/devanshbatham/rayder@v0.0.4

Uso

Rayder ofrece una forma sencilla de ejecutar flujos de trabajo definidos en archivos YAML. Utilice el siguiente comando:

rayder -w path/to/workflow.yaml

Configuración del flujo de trabajo

Un flujo de trabajo se define en un archivo YAML con la siguiente estructura:

vars:
  VAR_NAME: value
  # Add more variables...

parallel: true|false
modules:
  - name: task-name
    cmds:
      - command-1
      - command-2
      # Add more commands...
    silent: true|false
  # Add more modules...

Uso de variables en flujos de trabajo

Rayder le permite utilizar variables en la configuración de su flujo de trabajo, lo que facilita la parametrización de sus comandos y logra una mayor flexibilidad. Puede definir variables en la varssección de su archivo YAML de flujo de trabajo. Luego se puede hacer referencia a estas variables dentro de las cadenas de comando usando llaves dobles ( {{}}).

Definición de variables

Para definir variables, agréguelas a la varssección de su archivo YAML de flujo de trabajo:

vars:
  VAR_NAME: value
  ANOTHER_VAR: another_value
  # Add more variables...

Hacer referencia a variables en comandos

Puede hacer referencia a variables dentro de sus cadenas de comando usando llaves dobles ( {{}}). Por ejemplo, si definiste una variable OUTPUT_DIR, puedes usarla así:

modules:
  - name: example-task
    cmds:
      - echo "Output directory {{OUTPUT_DIR}}"

Suministro de variables a través de la línea de comando

También puede proporcionar valores para variables a través de la línea de comando al ejecutar su flujo de trabajo. Utilice el formato VARIABLE_NAME=valuepara proporcionar valores para variables específicas. Por ejemplo:

rayder -w path/to/workflow.yaml VAR_NAME=new_value ANOTHER_VAR=updated_value

Si no proporciona valores para las variables a través de la línea de comando, Rayder aplicará automáticamente los valores predeterminados definidos en la varssección de su archivo YAML de flujo de trabajo.

Recuerde que las variables proporcionadas a través de la línea de comando anularán los valores predeterminados definidos en la configuración de YAML.

Ejemplo

Ejemplo 1:

A continuación se muestra un ejemplo de cómo puede definir, hacer referencia y proporcionar variables en la configuración de su flujo de trabajo:

vars:
  ORG: "example.org"
  OUTPUT_DIR: "results"

modules:
  - name: example-task
    cmds:
      - echo "Organization {{ORG}}"
      - echo "Output directory {{OUTPUT_DIR}}"

Al ejecutar el flujo de trabajo, puede proporcionar valores para ORGy OUTPUT_DIRa través de la línea de comando como este:

rayder -w path/to/workflow.yaml ORG=custom_org OUTPUT_DIR=custom_results_dir

Esto anulará los valores predeterminados y utilizará los valores proporcionados para estas variables.

Ejemplo 2:

Aquí hay un ejemplo de configuración de flujo de trabajo diseñada para el reconocimiento whois inverso y el procesamiento de los dominios raíz en subdominios, resolviéndolos y verificando cuáles están activos:

vars:
  ORG: "Acme, Inc"
  OUTPUT_DIR: "results-dir"

parallel: false
modules:
  - name: reverse-whois
    silent: false
    cmds:
      - mkdir -p {{OUTPUT_DIR}}
      - revwhoix -k "{{ORG}}" > {{OUTPUT_DIR}}/root-domains.txt

  - name: finding-subdomains
    cmds:
      - xargs -I {} -a {{OUTPUT_DIR}}/root-domains.txt echo "subfinder -d {} -o {}.out" | quaithe -workers 30 
    silent: false

  - name: cleaning-subdomains
    cmds:
      -  cat *.out > {{OUTPUT_DIR}}/root-subdomains.txt
      -  rm *.out
    silent: true

  - name: resolving-subdomains
    cmds:
      - cat {{OUTPUT_DIR}}/root-subdomains.txt | dnsx -silent -threads 100 -o {{OUTPUT_DIR}}/resolved-subdomains.txt
    silent: false

  - name: checking-alive-subdomains
    cmds:
      - cat {{OUTPUT_DIR}}/resolved-subdomains.txt | httpx -silent -threads 100   0 -o {{OUTPUT_DIR}}/alive-subdomains.txt
    silent: false

Para ejecutar el flujo de trabajo anterior, ejecute el siguiente comando:

rayder -w path/to/reverse-whois.yaml ORG="Yelp, Inc" OUTPUT_DIR=results

Ejecución paralela

El parallelcampo en la configuración del flujo de trabajo determina si los módulos deben ejecutarse en paralelo o secuencialmente. La configuración parallelen truepermite que los módulos se ejecuten simultáneamente, lo que lo hace adecuado para módulos sin dependencias. Cuando se establece en false, los módulos se ejecutarán uno tras otro.

Flujos de trabajo

Explore una colección de flujos de trabajo de muestra y ejemplos en el repositorio de flujos de trabajo de Rayder. ¡Estén atentos para más incorporaciones!

Inspiración

La inspiración de este proyecto proviene del proyecto Awesome taskfile.

Descargar Rayder

Vistas: 0