dryrun¶
| Field | Value |
|---|---|
| Purpose | Safely tests settings by applying them and auto-reverting if something goes wrong |
| Repo | AmadlaOrg/dryrun |
| Language | Python (may move to Go) |
Overview¶
dryrun is a safety net for dangerous configuration changes. It applies a change, waits for confirmation (or a timeout), and automatically reverts if something goes wrong. The classic use case: you're SSH'd into a remote server and change a firewall rule that blocks your own connection — dryrun reverts the change before you're locked out.
Think of it like the "Keep this display setting?" dialog after changing your monitor resolution — if you don't confirm within a timeout, it reverts automatically.
Commands¶
| Command | Description |
|---|---|
dryrun run |
Apply settings temporarily and auto-revert on failure or timeout |
dryrun settings |
Manage dryrun configuration |
Pipeline Position¶
dryrun is not part of the main pipeline — it is a safety tool that wraps other tools to test changes before committing.
# Safely test a firewall change via enjoin
dryrun run -- enjoin apply --from firewall -f new-rules.yaml
# Safely test network configuration
dryrun run --timeout 30s -- enjoin apply --from network -f network.yaml
How It Works¶
- Snapshot — capture current state before applying changes
- Apply — execute the wrapped command
- Wait — wait for user confirmation or timeout
- Confirm or revert — if confirmed, keep the changes; if timeout or failure, revert to snapshot
Use Cases¶
- SSH safety: Apply network/firewall settings, verify SSH still works, revert if connection is lost
- Temporary settings: Try an OS setting temporarily to verify behavior before making it permanent
- Pipeline safety: Wrap enjoin or weaver commands during initial deployment testing
Current Gaps¶
- Repository exists with a README but minimal implementation
- Currently Python, may move to Go