-
Notifications
You must be signed in to change notification settings - Fork 3
Execution Tips and Tricks.md
For creating new ranges, use the create-ludus-range prompt rather than individual tools:
Why the prompt works better:
- Handles the complete workflow from requirements to deployment
- More details in your requirements = higher accuracy
- Automatically researches available roles and validates configurations
- Built-in safety checks and schema validation
How to use it:
Create a range with: Windows domain controller, 3 workstations, SCCM server with SQL backend, and Splunk monitoring for a red team exercise
Be specific about:
- Number and types of VMs needed
- Operating systems (Windows Server 2019, Windows 10, etc.)
- Specific software requirements (SCCM, Splunk, Elastic, etc.)
- Network setup needs (domain, workgroup, VLANs)
- Purpose of the lab (training, testing, red team exercise)
Save your configurations:
Set save_config: true to keep the generated configuration for future use.
If the generated range doesn't include everything you need:
- Ask the AI to review the prompt requirements again
- Add the missing components specifically: "Also add Tailscale VPN to this range"
- Use individual tools to modify the saved configuration file
Use individual tools for fast information gathering:
Check range status:
What's the status of my current range?
List available templates:
Show me what base configurations are available
See what roles are available:
List all available role schemas
All configuration files use relative paths from ~/.ludus-mcp/range-config-templates/:
Good path examples:
base-configs/elastic-security.ymlmy-configs/sccm-lab.yamluser1/domain-setup.yml
Don't use:
-
~/.ludus-mcp/range-config-templates/file.yml(absolute paths) -
../other-folder/config.yml(path traversal) -
/home/user/configs/file.yml(outside sandbox)
When building configurations manually:
-
Start with a template:
Show me the contents of base-configs/basic-ad-network.yml -
Modify and save:
Save this modified configuration as my-configs/custom-sccm-lab.yml -
Validate before deploying:
Validate the configuration in my-configs/custom-sccm-lab.yml
For Ludus CLI operations not covered by tools, use the execute-ludus-cmd prompt:
Safe execution:
Deploy my range configuration for user TestUser
The prompt will:
- Check if a dedicated tool exists first
- Analyze if the command is destructive
- Ask for confirmation before dangerous operations
- Handle admin vs user operations properly
Use dedicated tools for:
-
deploy_rangeinstead ofludus range deploy -
get_range_statusinstead ofludus range status -
destroy_rangeinstead ofludus range rm -
list_user_rangesinstead ofludus user ranges
Use CLI execution for:
- Advanced troubleshooting commands
- Operations not covered by dedicated tools
- Checking detailed logs or system information
Before building configurations:
-
List what's available:
List all role schemas so I can see what's available -
Research specific roles:
Show me the schema for synzack.ludus_sccm -
Check role dependencies: Look for
usage_notesordependency_examplein schema files for deployment order requirements.
You can add your own role schemas:
- Place YAML files in
~/.ludus-mcp/schemas/ - Follow the format in
Sample-schema.yaml - Use distinctive names to avoid conflicts:
company.custom_role.yaml - Custom schemas persist through server updates
- Verify credentials: Ensure any required external credentials are properly configured
-
Set the configuration:
Set my range configuration using my-configs/sccm-lab.yml -
Deploy and check status:
Deploy my range and show me the status
- Use natural language to cause LLM to perform automated tool chaining. Example "List all my users, get range status for each user and note any VM's that are powered down" should cause LLM to use multiple MCP tools to retrieve the desired information.
Be careful with destructive commands such as range destroy
Invalid YAML syntax:
- Use the validation tool to identify syntax errors
- Check indentation (use spaces, not tabs)
- Verify all required fields are present
Schema validation failures:
- Check that all role variables are correctly specified
- Verify variable types match the schema (string, boolean, integer)
- Ensure required variables have values
Role not found errors:
- Use
ludus_cli_execto list ansible roles and collections - If the role is installable by ansible galaxy use
ludus_cli_execto install it. - Check spelling and exact role names
Range won't deploy:
- Check range status and range deployment logs for specific error messages. LLM can check for you at the cost of tokens.
- Verify Ludus server has sufficient resources
- Ensure network connectivity (WireGuard/SSH)
- Check for conflicting range deployments
Partial deployments:
- Use
get_range_statusto see which VMs failed - Check Ludus server logs for specific errors
- Consider deploying in smaller batches
Credential problems:
- Verify external service credentials are properly set
- Check placeholder formats in configurations
- Re-run credential setup if needed
Stuck deployments:
- Tell the LLM to abort you target user's range deployment
- Check status after aborting
- Clean up any partial resources
Configuration mistakes:
- Keep backups of working configurations
- Use version numbers in filenames:
config-v1.yml,config-v2.yml - Test major changes in isolated environments
For admins managing multiple users:
- Use user-specific subdirectories:
user1/,user2/ - Specify target users in deployment commands
- Check user permissions before operations
Organization strategies:
- Group configurations by project or purpose
- Use descriptive names:
sccm-with-adcs-single-domain.yaml - Document custom configurations with comments
Development workflow:
- Start with base templates
- Save working templates in
range-config-templates\base-configswith a descriptive name and the LLM can use it for future reference.