Rapid Deployment
Reduce tenant provisioning from hours of manual configuration to minutes of automated deployment.
Tenant recipes transform a manually configured tenant into a reusable, one-click deployment template. A single tenant recipe can automate the creation of a complete Virtual Data Center — including tenant settings, networking configuration, firewall rules, included virtual machines, randomized credentials, DNS/DHCP registration, and email notifications — all from a single form submission.
Where the Tenant Wizard (covered in the previous page) guides you through a one-time manual configuration, recipes codify that configuration so it can be repeated hundreds of times with per-instance customizations.
Rapid Deployment
Reduce tenant provisioning from hours of manual configuration to minutes of automated deployment.
Consistency & Compliance
Every tenant instance follows the same golden-image baseline — networking, firewall rules, VMs, and policies are identical.
Reduced Human Error
Automation eliminates misconfigurations that creep in during repetitive manual setup.
Self-Service Enablement
Combined with the API, recipes power customer-facing portals where end users provision their own VDCs.
Every tenant recipe starts with a base tenant that serves as the template. This tenant must be:
Think of the base tenant as a golden image for an entire data center, not just a single VM.
| Field | Description | Notes |
|---|---|---|
| Name | Descriptive name for the recipe | Helps users locate the right recipe when multiple are available |
| Description | Optional documentation for the recipe | Good place for usage guidelines, intended purpose, and compliance notes |
| Icon | Optional Font Awesome icon | Visual identifier to distinguish recipe types (e.g., fa-cloud, fa-database) |
| Catalog | The catalog in which to store the recipe | Catalogs organize recipes within repositories — see Recipe Exchange below |
| Tenant | The base tenant to use as the template | Must be powered off |
| Version | Auto-incrementing version number | Starts at 1.0.0, increments to 1.0.0-1, 1.0.0-2, etc. Can be manually set to 2.0.0 for major changes |
| Preserve SSL Certs | Copy SSL certificates from base tenant to instances | Enable when the base tenant has pre-installed certificates |
| Version Dependencies | VergeOS feature requirements | Prevents remote systems from using a recipe they cannot accommodate |
Questions are the heart of a tenant recipe. They capture per-instance input from the operator (or from the VergeOS database) and inject those values into the new tenant during creation.
When you create a tenant recipe, VergeOS automatically generates system questions organized into sections. Many system questions are disabled by default and must be explicitly enabled if needed. System questions cannot be deleted — only enabled or disabled.
Every question — system or custom — is configured with these fields:
| Field | Purpose |
|---|---|
| Section | Groups questions on the input form (some created automatically, custom sections can be added) |
| Name | Variable name referenced in scripts — alphanumeric only, no spaces or special characters |
| Type | How data is collected — user input field, database lookup, hidden value, etc. |
| Order ID | Display order within the section |
| Display | Label shown on the user input form |
| Default Value | Pre-populated answer (optional) |
| Regex Validation | Regular expression for input validation (optional) |
| Placeholder Text | Greyed hint text showing expected input format (optional) |
| Tooltip Text | Hover popup with help text (optional) |
| Note Text | Help text displayed directly below the input field (optional) |
| On Change | JavaScript to show/hide other questions based on this field’s value (optional) |
The following tables document the built-in system questions generated for every tenant recipe.
Core tenant identity, admin credentials, and SSL configuration:
| Variable Name | Display Label | Type | Default | Enabled by Default |
|---|---|---|---|---|
YB_URL | URL | String | — | Yes |
YB_DESCRIPTION | Description | Text Area | — | Yes |
YB_USER_NAME | Admin User | String | admin | Yes |
YB_USER_PASSWORD | Password | Password | — | Yes |
YB_USER_EMAIL | String | — | No | |
YB_USER_CHANGE_PASSWORD | Require Password Change | Boolean | false | No |
YB_EXPOSE_CLOUD_SNAPSHOTS | Expose System Snapshots | Boolean | true | No |
YB_HELP_URL | Help URL | String | default | No |
YB_THEME_ACCESS | Theme Access | List | host_only | Yes |
YB_SPECIFIED_THEME | Theme | Row Selection | — | Yes |
YB_CLUSTER | Cluster | Cluster | — | No |
YB_CERT_TYPE | SSL Certificate Type | Hidden | manual | No |
YB_CERT_DOMAIN | SSL Certificate Domain | String | — | No |
YB_CERT_PUBLIC | Public SSL Certificate | Text Area | — | No |
YB_CERT_PRIVATE | Private SSL Certificate | Text Area | — | No |
YB_CERT_CHAIN | SSL Certificate Chain | Text Area | — | No |
Compute resources allocated to the tenant’s virtual node(s):
| Variable Name | Display Label | Type | Default | Enabled by Default |
|---|---|---|---|---|
YB_NODE_1_CPU_CORES | Node 1 Cores | Number | 8 | Yes |
YB_NODE_1_RAM | Node 1 RAM | RAM | 16384 | Yes |
YB_NODE_1_INSTANCES | Node 1 Instances | Number | 1 | No |
YB_NODE_1_CLUSTER | Node 1 Cluster | Cluster | — | No |
YB_NODE_1_CLUSTER_FAILOVER | Node 1 Failover Cluster | Cluster | — | No |
Network addresses for the tenant’s UI and external connectivity:
| Variable Name | Display Label | Type | Default | Enabled by Default |
|---|---|---|---|---|
YB_NET_1_IP | UI IP Address | Virtual IP Address | — | Yes |
YB_NET_2_IP | IP Address | Virtual IP Address | — | Yes |
Beyond system questions, you can add custom questions to capture any additional input your deployment requires. Custom questions support the same field types as system questions, plus several powerful database interaction types.
| Type | Purpose | Example Use |
|---|---|---|
| String | Single-line text input | Customer name, hostname |
| Text Area | Multi-line text input | Notes, configuration snippets |
| Password | Masked input with confirmation | Service account passwords |
| Number | Numeric input | Port numbers, instance counts |
| Boolean | Checkbox (true/false) | Enable/disable features |
| List | Dropdown selection | Choose from predefined options |
| Hidden | Not displayed on form | Hard-coded values for scripts |
| Network | Network selector | Choose target network |
| Virtual IP Address | IP address selector | Assign specific IPs |
| RAM | Memory input (in MB) | Additional resource allocation |
| Cluster | Cluster selector | Target cluster for placement |
These advanced question types allow recipes to read from and write to the VergeOS database during tenant creation — enabling powerful automation workflows:
| Type | Purpose | Example Use |
|---|---|---|
| Database Create | Create a new record in the VergeOS database | Register a DHCP reservation, create a DNS entry |
| Database Edit | Modify an existing database record | Update a network configuration, change a setting |
| Database Find | Look up values from the database | Retrieve the next available IP, find a network ID |
Each database question includes a Database Context field that determines whether the operation targets the parent system’s database or the newly created tenant’s database. This distinction is critical:
When you modify a recipe (change questions, update the base tenant, adjust defaults), the changes are not immediately available to users. You must republish the recipe:
1.0.0-1 → 1.0.0-2)When a recipe is republished, remote systems and tenants with access receive a notification that an update is available. They must explicitly download the update to use the new version.
An instance is a tenant that was created from a recipe and remains associated with it. You can view all instances from the recipe dashboard by clicking Instances on the left menu.
Key rules for instances:
Recipes are organized into repositories and catalogs, forming a hierarchical structure:
scope=global, making them available to all tenants.| Scope | Availability |
|---|---|
| Private | Only the local VergeOS system |
| None | Disabled — not available anywhere |
| Tenant | Local system and its direct tenants |
| Global | Local system, tenants, and external VergeOS systems (with API credentials) |
When recipes are updated at the source, both tenants and remote systems see a notification that an update is available for download.
To illustrate the power of tenant recipes, consider this scenario from the VergeOS CSP Reference Architecture:
CloudHoster, a mid-sized cloud provider, wants to offer an S3-compatible storage service called “Cloud Storage” to their customers. Rather than manually configuring each customer’s environment, they build a tenant recipe that automates the entire deployment:
The recipe prompts the operator (or the customer self-service portal) for:
With a single form submission, CloudHoster deploys a complete, isolated, S3-compatible storage environment for their customer — in minutes rather than hours.
CloudHoster deploys this recipe across four of their sites by sharing the catalog via a remote repository. When they update the recipe (e.g., to upgrade the storage application VM), all sites receive a notification and can pull the update.
STORAGE_CAPACITY_GB is better than Q1 for script maintenance2.0.0) when making significant changes to the base tenant