mirror of
https://github.com/wgpsec/redc.git
synced 2026-01-24 12:43:19 +08:00
4.2 KiB
4.2 KiB
Redc Skills - AI Operations Guide
Multi-cloud red team infrastructure automation tool built on Terraform.
Quick Reference
Config: ~/redc/config.yaml | Templates: ~/redc/redc-templates/ | Docs: https://github.com/wgpsec/redc
Configuration
providers:
aws:
AWS_ACCESS_KEY_ID: "KEY"
AWS_SECRET_ACCESS_KEY: "SECRET"
region: "us-east-1"
aliyun:
ALICLOUD_ACCESS_KEY: "KEY"
ALICLOUD_SECRET_KEY: "SECRET"
region: "cn-hangzhou"
tencentcloud:
TENCENTCLOUD_SECRET_ID: "ID"
TENCENTCLOUD_SECRET_KEY: "KEY"
region: "ap-guangzhou"
Env vars: Set AWS_ACCESS_KEY_ID, ALICLOUD_ACCESS_KEY, TENCENTCLOUD_SECRET_ID, etc. if config.yaml unavailable.
Global Flags
| Flag | Default | Description |
|---|---|---|
--config |
~/redc/config.yaml |
Config file path |
-u, --user |
system |
User identifier |
--project |
default |
Project name |
--debug |
false |
Debug mode |
Commands
Setup
redc init # Initialize templates
redc pull <image> # Download template (e.g., aliyun/ecs)
redc image ls # List local templates
Deploy
redc run <template> -n <name> -e key=val # Plan & start (create infrastructure)
redc plan <template> -n <name> # Plan only (preview without creating)
redc start <case-id> # Start case (create infrastructure)
Manage
redc ps # List all cases
redc status <case-id> # Check status
redc stop <case-id> # Stop infrastructure
redc kill <case-id> # Stop & remove
redc rm <case-id> # Remove case
Execute
redc exec <case-id> <command> # Run command
redc exec -t <case-id> bash # Interactive shell
redc cp <src> <case-id>:<dest> # Upload file
redc cp <case-id>:<src> <dest> # Download file
Workflows
Quick Deploy:
redc pull aliyun/ecs && redc init
redc run aliyun/ecs -n myserver -e password=Pass123
# Returns case-id (e.g., 8a57078ee856)
redc exec 8a57078ee856 whoami
Controlled:
redc plan aws/ec2 -n staging
# Review the planned resources, then:
redc start <case-id>
redc cp deploy.sh <case-id>:/root/
redc exec <case-id> "bash /root/deploy.sh"
Cleanup:
redc stop <case-id> && redc rm <case-id>
# Or: redc kill <case-id>
Automation
import subprocess, re
def redc_run(template, name, env=None):
cmd = ["redc", "run", template, "-n", name]
if env:
for k, v in env.items():
cmd.extend(["-e", f"{k}={v}"])
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
match = re.search(r'[a-f0-9]{12,64}', result.stdout)
return match.group(0) if match else None
# Usage
case_id = redc_run("aliyun/ecs", "auto_deploy", {"password": "Secure123"})
Output Patterns
- Success:
✅in output - Error:
❌in output - Case ID:
[a-f0-9]{64}(use first 12 chars) - Status:
running,stopped,created,error
Error Handling
| Error | Solution |
|---|---|
| Config not found | Create ~/redc/config.yaml |
| Template not found | Run redc pull <template> |
| Case ID not found | Check redc ps |
| SSH timeout | Verify instance running, security groups |
| Init failed | Check network, configure Terraform mirror |
JSON Schemas
Case:
{
"id": "string[64]",
"name": "string",
"template": "string",
"status": "running|stopped|created|error",
"outputs": {"public_ip": "string"}
}
Config:
{
"providers": {
"aws": {"AWS_ACCESS_KEY_ID": "string", "region": "string"}
}
}
Best Practices
- Use short IDs (first 12 chars)
- Assign meaningful names:
<project>_<purpose>_<env> - Always cleanup:
redc stop→redc rm - Use
--debugfor troubleshooting - Never commit config.yaml to version control
- Monitor costs with
redc ps
Resources
- Repo: https://github.com/wgpsec/redc
- Templates: https://github.com/wgpsec/redc-template
- Online: https://redc.wgpsec.org/
Version: 1.0.0 | License: Apache 2.0