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 vars
secció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 vars
secció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=value
para 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 vars
secció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 ORG
y OUTPUT_DIR
a 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 parallel
campo en la configuración del flujo de trabajo determina si los módulos deben ejecutarse en paralelo o secuencialmente. La configuración parallel
en true
permite 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.