mirror of
https://github.com/j3ssie/osmedeus.git
synced 2026-08-24 00:22:29 +02:00
214 lines
7.4 KiB
YAML
214 lines
7.4 KiB
YAML
# =============================================================================
|
|
# Module Workflow: Docker Runner Configuration Example
|
|
# =============================================================================
|
|
# This file demonstrates all Docker runner configuration fields at both
|
|
# the workflow level (for all steps) and step level (per-step override).
|
|
# =============================================================================
|
|
|
|
kind: module
|
|
name: docker-runner-example
|
|
description: Demonstrates Docker runner configuration with all available fields
|
|
tags: docker, runner, container
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# RUNNER CONFIGURATION (Workflow-Level)
|
|
# Applies to all steps unless overridden at step level
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# runner: Execution environment for this workflow
|
|
# Options: host (default - local machine), docker, ssh
|
|
runner: docker
|
|
|
|
# runner_config: Configuration for the selected runner type
|
|
runner_config:
|
|
# -------------------------------------------------------------------------
|
|
# DOCKER-SPECIFIC CONFIGURATION
|
|
# -------------------------------------------------------------------------
|
|
|
|
# image: Docker image to use (required for docker runner)
|
|
# Format: registry/image:tag or just image:tag
|
|
image: ubuntu:22.04
|
|
|
|
# env: Environment variables to set inside the container
|
|
# Map of VAR_NAME: value
|
|
env:
|
|
MY_VAR: my-value
|
|
API_KEY: "{{api_key}}" # Can use template variables
|
|
THREADS: "{{threads}}"
|
|
|
|
# volumes: Volume mounts in docker format
|
|
# Format: host_path:container_path[:options]
|
|
# Options: ro (read-only), rw (read-write)
|
|
volumes:
|
|
- "/tmp/osmedeus:/data"
|
|
- "{{Output}}:/output"
|
|
- "/etc/hosts:/etc/hosts:ro"
|
|
|
|
# network: Docker network mode
|
|
# Options: bridge (default), host, none, container:<name>, or network name
|
|
network: host
|
|
|
|
# persistent: Container lifecycle mode
|
|
# true = reuse the same container across steps (faster, state preserved)
|
|
# false = ephemeral, create new container per step (isolated, clean state)
|
|
persistent: true
|
|
|
|
# -------------------------------------------------------------------------
|
|
# COMMON CONFIGURATION (applies to docker and ssh)
|
|
# -------------------------------------------------------------------------
|
|
|
|
# workdir: Working directory inside the container/remote
|
|
# Commands will execute in this directory
|
|
workdir: /app
|
|
|
|
params:
|
|
- name: api_key
|
|
default: "demo-key"
|
|
|
|
- name: threads
|
|
default: "5"
|
|
|
|
steps:
|
|
# ===========================================================================
|
|
# Step using workflow-level runner (docker with ubuntu:22.04)
|
|
# ===========================================================================
|
|
- name: use-workflow-runner
|
|
type: bash
|
|
log: "Running in workflow-level Docker container"
|
|
command: 'echo "Running inside ubuntu:22.04 container"'
|
|
|
|
# ===========================================================================
|
|
# Step with per-step Docker runner override
|
|
# Uses different image than workflow-level config
|
|
# ===========================================================================
|
|
- name: step-with-runner-override
|
|
type: bash
|
|
log: "Running in step-specific Docker container"
|
|
|
|
# step_runner: Override runner type for this step only
|
|
# Options: host, docker, ssh
|
|
step_runner: docker
|
|
|
|
# step_runner_config: Override runner configuration for this step
|
|
# Same structure as runner_config but applies only to this step
|
|
step_runner_config:
|
|
# Use a different image for this specific step
|
|
image: python:3.11-slim
|
|
|
|
env:
|
|
PYTHONPATH: /app
|
|
|
|
volumes:
|
|
- "{{Output}}:/output:rw"
|
|
|
|
network: bridge
|
|
|
|
persistent: false
|
|
|
|
workdir: /app
|
|
|
|
command: 'python3 -c "print(\"Running in Python container\")"'
|
|
|
|
# ===========================================================================
|
|
# Remote-bash step type with Docker (explicit remote-bash type)
|
|
# remote-bash is specifically for executing commands in remote environments
|
|
# ===========================================================================
|
|
- name: remote-bash-docker
|
|
# type: remote-bash is specifically for remote execution (docker/ssh)
|
|
type: remote-bash
|
|
log: "Remote bash execution in Docker"
|
|
|
|
# step_runner: Required for remote-bash type - specifies execution environment
|
|
# Must be "docker" or "ssh"
|
|
step_runner: docker
|
|
|
|
step_runner_config:
|
|
image: alpine:latest
|
|
workdir: /tmp
|
|
|
|
# command/commands/parallel_commands: Same as bash step
|
|
command: 'echo "Hello from Alpine container" > /tmp/output.txt'
|
|
|
|
# step_remote_file: File path on remote (inside container) to copy after execution
|
|
# This file will be copied from the container to the host
|
|
step_remote_file: /tmp/output.txt
|
|
|
|
# host_output_file: Local path where the remote file will be copied
|
|
# Template variables are supported
|
|
host_output_file: "{{Output}}/docker-output.txt"
|
|
|
|
# ===========================================================================
|
|
# Parallel commands in Docker container
|
|
# ===========================================================================
|
|
- name: docker-parallel-commands
|
|
type: bash
|
|
log: "Running parallel commands in Docker"
|
|
step_runner: docker
|
|
step_runner_config:
|
|
image: ubuntu:22.04
|
|
persistent: true
|
|
|
|
parallel_commands:
|
|
- 'sleep 2 && echo "Parallel job A completed"'
|
|
- 'sleep 1 && echo "Parallel job B completed"'
|
|
- 'sleep 3 && echo "Parallel job C completed"'
|
|
|
|
# ===========================================================================
|
|
# Foreach loop executing in Docker
|
|
# ===========================================================================
|
|
- name: docker-foreach
|
|
type: foreach
|
|
log: "Processing items in Docker containers"
|
|
input: "{{Output}}/targets.txt"
|
|
variable: target
|
|
threads: 3
|
|
|
|
step:
|
|
name: process-in-docker
|
|
type: bash
|
|
step_runner: docker
|
|
step_runner_config:
|
|
image: curlimages/curl:latest
|
|
network: host
|
|
command: 'curl -s -o /dev/null -w "%{http_code}" "[[target]]"'
|
|
exports:
|
|
http_status: "{{stdout}}"
|
|
|
|
# ===========================================================================
|
|
# Step running on host (override workflow's docker runner)
|
|
# ===========================================================================
|
|
- name: run-on-host
|
|
type: bash
|
|
log: "Running on host machine (overriding workflow runner)"
|
|
|
|
# Override to run locally instead of in container
|
|
step_runner: host
|
|
|
|
command: 'echo "This runs directly on the host machine"'
|
|
|
|
# ===========================================================================
|
|
# Docker step with all structured arguments
|
|
# ===========================================================================
|
|
- name: docker-with-args
|
|
type: bash
|
|
log: "Docker step with structured arguments"
|
|
step_runner: docker
|
|
step_runner_config:
|
|
image: nuclei:latest
|
|
volumes:
|
|
- "{{Output}}:/output"
|
|
- "/root/nuclei-templates:/templates:ro"
|
|
workdir: /output
|
|
|
|
command: nuclei
|
|
speed_args: '-rate-limit 100 -c {{threads}}'
|
|
config_args: '-t /templates/cves/'
|
|
input_args: '-u {{Target}}'
|
|
output_args: '-o /output/nuclei-results.txt'
|
|
|
|
step_remote_file: /output/nuclei-results.txt
|
|
host_output_file: "{{Output}}/nuclei-results.txt"
|
|
|
|
exports:
|
|
nuclei_output: "{{Output}}/nuclei-results.txt"
|