Overview
The deployment system provides:- Automated OS installation - Deploy Linux distributions automatically
- Multiple boot methods - Kickstart, Preseed, cloud-init, iPXE
- Template variables - Dynamic configuration based on asset data
- PXE network boot - Boot from network for hands-off deployment
- Deployment tracking - Monitor deployment status and history
Preboot Configuration
Preboot configurations are templates that define how servers should be deployed.Supported Configuration Types
Kickstart- RedHat, CentOS, Fedora deployments
- Anaconda-based installations
- Debian and Ubuntu deployments
- Debian-installer based systems
- Ubuntu 20.04+ using cloud-init/casper
- Cloud-style configuration
- Network boot configuration
- Custom boot menus
- Chainloading options
Creating Preboot Configurations
Navigate to Preboot Configurations
Go to Deployment → Preboot configuration (
/deployment/prebootconfiguration/)Configure Basic Settings
Fill in:
- Name - Reference name for this configuration
- Type - Select kickstart, preseed, meta-data, user-data, iPXE, or script
- Description - Optional documentation
Write Configuration Template
Enter your configuration in the Configuration field.Use template variables (see below) for dynamic values.
Template Variables
Ralph provides variables that are replaced with actual values during deployment.Available Variables
Wrap variables in{{ }} to use them:
Asset Information
{{ hostname }}- Full hostname (e.g.,ralph123.dc1.mydc.net){{ dc }}- Data center name (e.g.,data-center1){{ domain }}- Domain name (e.g.,dc1.mydc.net)
{{ configuration_class_name }}- Configuration class (e.g.,www){{ configuration_module }}- Configuration module (e.g.,ralph){{ configuration_path }}- Full path (e.g.,ralph/www)
{{ service_env }}- Service environment (e.g.,Backup systems - prod){{ service_uid }}- Service unique ID (e.g.,sc-123)
{{ deployment_id }}- Unique deployment ID{{ kernel }}- URL to kernel image{{ initrd }}- URL to initrd image{{ kickstart }}- URL to kickstart file{{ preseed }}- URL to preseed file{{ script }}- URL to custom script{{ meta_data }}- URL to cloud-init meta-data{{ user_data }}- URL to cloud-init user-data{{ done_url }}- URL to mark deployment complete{{ deployment_base }}- Base URL for deployment{{ ralph_instance }}- Ralph instance URL
Example: Kickstart Template
Example: Cloud-Init User-Data
Example: iPXE Configuration
Ralph Instance URL
By default, URLs usehttp://127.0.0.1:8000. Configure this in settings:
Deployment Workflow
Prepare Asset
Create or select the data center asset to deploy.Ensure it has:
- Hostname (or will be auto-generated)
- Service environment
- Configuration path (if using config management)
Configure PXE Boot
Set up your DHCP/PXE server to:
- Boot from network
- Load iPXE or initial bootloader
- Point to Ralph’s deployment endpoint
Initiate Deployment
Trigger deployment in Ralph or boot the server from network.Ralph generates a unique deployment ID and serves configuration files.
Monitor Progress
The deployment process:
- Downloads kernel and initrd
- Loads kickstart/preseed configuration
- Installs operating system
- Runs post-installation scripts
- Calls done_url when complete
Integration Examples
Puppet Integration
Ansible Integration
Custom Scripts
Serve custom scripts via the{{ script }} URL:
Advanced Configuration
Multiple Configurations
Create different preboot configurations for:- Different OS distributions (CentOS vs Ubuntu)
- Different environments (production vs development)
- Different server roles (web server vs database)
Dynamic Kernel Parameters
iPXE configurations can pass dynamic parameters:Deployment Completion Hook
Always call{{ done_url }} at the end of deployment:
Tips and Best Practices
Troubleshooting
Variables not replaced
Variables not replaced
- Ensure you’re using the correct syntax:
{{ variable_name }} - Check that the variable exists in the available variables list
- Verify the asset has the required data (hostname, service env, etc.)
Deployment hangs
Deployment hangs
- Check network connectivity to Ralph instance
- Verify RALPH_INSTANCE setting is correct and accessible
- Check firewall rules allow access to deployment URLs
- Review logs on the deploying server
Configuration not found
Configuration not found
- Ensure preboot configuration is saved and active
- Verify you selected the correct configuration type
- Check URL paths are correct
Related Documentation
- DCIM - Managing deployed assets
- Custom Fields - Configuration variables
- External: Kickstart documentation
- External: Debian Preseed
- External: Cloud-init documentation