{
"_id": {
"$oid": "6841e4b0fd270b2ab92d7eaa"
},
// 📌 [Auto-generated]
// Description: Unique system identifier for internal use (MongoDB ObjectId).
// Type: ObjectId (string)
// Required: No (automatically handled)
"vast_id": "21452",
// 📌 [Required]
// Description: Your unique request ID or reference number.
// Type: string
// Format: Numeric string (e.g., "21452")
// Example: "21452"
"env": "dev",
// 📌 [Required]
// Description: The environment where the VM will be deployed.
// Type: string
// Allowed values: "dev", "qa", "uat", "prod"
// Example: "dev" for development, "prod" for production
"ver": "0.2",
// 📌 [Do Not Modify]
// Description: Template version. Used by automation to ensure compatibility.
// Type: string
// Format: Semantic versioning (e.g., "0.2")
// Required: Yes
"date": "June 4 2025",
// 📌 [Required]
// Description: Date of this request/configuration.
// Type: string
// Format: "Month Day Year" (e.g., "June 4 2025")
"rhel_ver": "9.5",
// 📌 [Required]
// Description: Version of Red Hat Enterprise Linux to install.
// Type: string
// Allowed: Valid RHEL versions (e.g., "8.6", "9.2", "9.5")
// Example: "9.5"
"vm_count": "1",
// 📌 [Required]
// Description: Number of virtual machines to provision.
// Type: string (numeric string accepted for compatibility)
// Format: "1", "2", "3", ...
// Example: "1"
"cpu_cores": "4",
// 📌 [Required]
// Description: Number of virtual CPU cores per VM.
// Type: string (numeric)
// Allowed values: "2", "4", "8", "16"
// Example: "4"
"memory": "32G",
// 📌 [Required]
// Description: RAM to allocate to each VM.
// Type: string
// Format: Number followed by "G" (e.g., "32G", "64G")
// Example: "32G"
"shell": "/bin/bash",
// 📌 [Optional]
// Description: Default shell for the user in the VM.
// Type: string
// Common values: "/bin/bash", "/bin/zsh"
// Default: "/bin/bash"
"timezone": "GMT",
// 📌 [Optional]
// Description: Timezone setting for the VM.
// Type: string
// Format: TZ database string (e.g., "GMT", "Asia/Kolkata", "UTC")
// Example: "GMT"
"email_notification_list": {
"COMMENT": "This is a MANDATORY field and must contain at least one example email distribution list",
// 📌 [For Reference Only – this key is a comment, not used in automation]
"to": "vm-automation@example.com"
// 📌 [Required]
// Description: Email ID to receive VM deployment updates.
// Type: string (email)
// Format: valid email (e.g., team@example.com)
// Example: "vm-automation@example.com"
},
"subscription_manager_register": {
"org": "system_admin",
// 📌 [Required]
// Description: Red Hat Subscription Manager organization name.
// Type: string
// Example: "system_admin"
"activationkey": "vm_automation_test"
// 📌 [Required]
// Description: Activation key to register with Red Hat.
// Type: string
// Example: "vm_automation_test"
}
}
"server_details": {
"servername": "VM-Automation-Test1",
// 📌 Description: Name or hostname of the VM/server.
// Type: string
// Format: Alphanumeric with dashes/underscores. Avoid spaces.
// Example: "VM-Automation-Test1"
// Required: Yes
"total_storage_size": "2.7T",
// 📌 Description: Total disk capacity of the server.
// Type: string
// Format: Number + "T" for terabytes or "G" for gigabytes (e.g., "2.7T", "500G")
// Required: Yes
"ip_address": "10.25.5.5",
// 📌 Description: IP address to assign to this VM/server.
// Type: string (IPv4)
// Format: "x.x.x.x" (e.g., "10.25.5.5")
// Required: Yes
"subnet": "255.255.255.0",
// 📌 Description: Subnet mask associated with the IP.
// Type: string (IPv4)
// Example: "255.255.255.0"
// Required: Yes
"gateway": "10.25.58.1",
// 📌 Description: Default gateway for outbound traffic.
// Type: string (IPv4)
// Required: Yes
"vlan": "412"
// 📌 Description: VLAN ID for the server’s network interface.
// Type: string or integer
// Format: Numeric only (e.g., "412")
// Required: Yes
},
"motd": {
"#etc#motd": "NOTICE - PROPRIETARY SYSTEM\r\n\r\nThis system is intended to be used solely by authorized users in the course of legitimate corporate business. Users are monitored to the extent necessary to properly administer the system, to identify unauthorized users or users operating beyond their proper authority, and to investigate improper access or use. BY accessing this system, you are consenting to this monitoring."
// 📌 Description: Legal or informational "Message Of The Day" (MOTD) to display at login.
// Type: string (multi-line)
// Required: Optional but recommended for corporate systems.
},
"volume_groups": {
"vgapps": {
"vsize": "100G",
// 📌 Description: Size of the "vgapps" volume group.
// Type: string
// Format: Number + "G" (e.g., "100G")
// Required: Yes
"fs_type": "xfs"
// 📌 Description: Default filesystem for volumes in this group.
// Type: string
// Allowed: "xfs", "ext4", etc.
// Required: Yes
},
"vgdb": {
"vsize": "100G",
"fs_type": "xfs"
}
},
"logical_volumes": {
"apps": {
"lvapps": {
"vgname": "vgapps",
// 📌 Description: Name of the volume group this LV belongs to.
// Type: string
// Required: Yes
"lvname": "lvapps",
// 📌 Description: Logical volume name.
// Type: string
// Format: Alphanumeric with underscores/dashes
// Required: Yes
"lvsize": "20G",
// 📌 Description: Size of the logical volume.
// Type: string
// Format: Number + "G"
// Required: Yes
"fs_type": "xfs",
// 📌 Description: Filesystem to apply.
// Type: string
// Allowed: "xfs", "ext4"
// Required: Yes
"lv_mountpoint": "/applications"
// 📌 Description: Mount point path in Linux filesystem.
// Type: string (absolute path)
// Example: "/applications"
// Required: Yes
},
"lvlogging": {
"vgname": "vgapps",
"lvname": "lvlogging",
"lvsize": "20G",
"fs_type": "xfs",
"lv_mountpoint": "/logging"
}
},
"db": {
"lvsystemdb": {
"vgname": "vgdb",
"lvname": "lvsystemdb",
"lvsize": "20G",
"fs_type": "xfs",
"lv_mountpoint": "/systemdb"
}
}
},
"lvsdsdb1": {
"vgname": "vgdb",
"lvname": "lvsdsdb1",
"lvsize": "16G",
"fs_type": "xfs",
"lv_mountpoint": "/sds_db1"
// 📌 Additional standalone logical volume not under logical_volumes section.
// Group: vgdb, Mounts at: /sds_db1
},
"lvsdsdb2": {
"vgname": "vgdb",
"lvname": "lvsdsdb2",
"lvsize": "20G",
"fs_type": "xfs",
"lv_mountpoint": "/sds_db2"
},
"lvdbbackup": {
"vgname": "vgdb",
"lvname": "lvdbbackup",
"lvsize": "25G",
"fs_type": "xfs",
"lv_mountpoint": "/db_backup"
}
Parameter Guide: hostname
(VM Name)
📘 Technical Description:
The hostname
defines the unique name assigned to a virtual machine (VM). This is the name by which the VM will be identified on the network and internally within the automation system.
🤖 Plain Language: What is a Hostname?
The hostname is the name you give to your virtual machine—like naming your phone or laptop. It helps you and others recognize the VM in tools, dashboards, and networks.
Example: Like calling your laptop “John-Laptop” or phone “Office-Phone”, you give your VM a name like
webserver01
.
✅ What Should I Enter?
✅ Allowed | ❌ Not Allowed |
---|---|
Lowercase letters (a–z) | Spaces (My VM ) |
Numbers (0–9) | Special characters (@ , # , ! , etc.) |
Hyphens (- ) | Underscores (_ ) in some systems |
Max 63 characters | Capital letters (to avoid mismatch) |
💡 Good Examples:
Scenario | Hostname | Why It’s Good |
---|---|---|
Web server | webserver01 | Simple and clear |
Project tagging | finance-app-vm01 | Project-specific and searchable |
Location hint | blr-db01 | Shows it's a database server in Bangalore |
❌ Bad Examples:
Hostname | Reason |
---|---|
My VM | Contains a space |
Server@123 | @ is not allowed |
VM_Prod | Uses _ which may be invalid |
App.Server | Dot (. ) is not allowed in many hostnames |
📝 Where Do I Enter This?
In your automation JSON file:
📎 Summary Table:
Question | Answer |
---|---|
Required? | ✅ Yes |
Can be empty? | ❌ No |
Case-sensitive? | ✅ Yes (avoid uppercase) |
Seen in VM login? | ✅ Yes (it's the machine name) |
Helps in DNS/network? | ✅ Yes |
🛠 Pro Tips:
-
Use short, descriptive names.
-
Avoid using test/test1 for multiple machines—be specific.
-
Follow a standard naming format, like:
User Guide: Network Configuration (Per Interface)
This guide explains the required fields for setting up network configurations for each VM interface. Please enter correct values to ensure the VM gets connected to the right network.
🔸 Interface Block (Example Key: eth413_admin_interface
)
Each interface has the following parameters:
Parameter | Type | Required? | Description | Example |
---|---|---|---|---|
servername | String | ✅ Yes | A name to identify the VM using this network. Usually same as the main VM name. | "VM-App-Test01" |
ip_address | String (IPv4) | ✅ Yes | The static IP address to assign to the VM. Must be valid and unique. | "192.168.10.25" |
subnet | String | ✅ Yes | Subnet mask for the network. Defines the IP range. | "255.255.255.0" |
gateway | String (IPv4) | ✅ Yes | The gateway for the subnet. Usually ends in .1 . | "192.168.10.1" |
vlan | Integer | ✅ Yes | VLAN ID assigned for this network. Check with the network team. | 413 |
nad | String | ✅ Yes | NetworkAttachmentDefinition name used for VLAN/bridge mapping. Must exist in the system. | "br413-inner-bat" |
✅ Field-by-Field Details:
🔹 servername
-
Type: String
-
Required: Yes
-
Purpose: Helps identify the VM associated with this interface.
-
Value Format: Letters, numbers, hyphens (
-
), no spaces. -
Example:
"VM-App-Test01"
🔹 ip_address
-
Type: String (IPv4 format)
-
Required: Yes
-
Purpose: Assigns a unique IP address to the VM. Must be in the correct subnet range.
-
Format:
"x.x.x.x"
(e.g.,"192.168.1.100"
) -
Example:
"151.205.58.97"
🔹 subnet
-
Type: String
-
Required: Yes
-
Purpose: Defines how big the IP range is for that network.
-
Common Values:
"255.255.255.0"
,"255.255.254.0"
-
Example:
"255.255.255.0"
🔹 gateway
-
Type: String (IPv4)
-
Required: Yes
-
Purpose: Tells the VM which IP to use to reach outside networks.
-
Format: Must be reachable from
ip_address
-
Example:
"151.205.58.1"
🔹 vlan
-
Type: Integer
-
Required: Yes
-
Purpose: Tags the traffic from the VM with a VLAN ID for isolated networking.
-
Valid Range: 1 to 4094 (Check with network admin)
-
Example:
413
🔹 nad
-
Type: String
-
Required: Yes
-
Purpose: Specifies the name of a pre-created NetworkAttachmentDefinition in OpenShift/K8s used to attach the network.
-
Tip: Must match exactly with the defined NAD name.
-
Example:
"br413-inner-bat"
📝 Example JSON Block
⚠️ Common Mistakes to Avoid
Mistake | Why it's wrong |
---|---|
"ip_address": "151.205.58.1" | Conflicts with the gateway IP |
"vlan": "413" (as string) | Must be entered as a number (no quotes) |
"nad": "Br413-Inner-Bat" | Case-sensitive – must match exactly as defined |
🛠 Tips:
-
Double-check IP and subnet range.
-
Confirm VLAN ID and NAD name with the platform/network team.
-
Avoid using the same
ip_address
in multiple entries.
Absolutely! Below is the updated User Guide for your JSON structure, now including both sections:
- Global Network Configuration (
Network_Configuration
) - Interface Configuration Example (e.g.,
eth413_admin_interface
)
Each section includes:
- A purpose description
- A table with field names, types, descriptions, and example values
📘 User Guide: Understanding the JSON Configuration
This guide explains how to interpret the JSON configuration used for defining global network settings and interface configurations.
🔧 Section 1: Global Network Configuration
Purpose :
This section defines global network settings that are typically applied to the system's network configuration file.
Example JSON :
Field Explanation Table
🖥️ Section 2: Interface Configuration (Example)
Purpose :
Defines the configuration for a specific network interface (e.g., admin or control plane).
Example JSON :
Field Explanation Table
💡 General Notes
- Each top-level key in the JSON represents a different configuration block.
- Use these definitions to automate setup scripts, documentation, or deployment tools.
- Ensure correct data types are used when parsing or generating configs programmatically.
Network Configuration:
Description:
This JSON structure defines both global network settings and interface-specific configurations. It is used to configure system-level networking and individual interfaces such as admin or control plane interfaces.Modifications to root logical volumes are not recommended. These volumes are critical to system stability and OS functionality.
This section is provided only for reference to illustrate the structure and configuration format.
Symbolic Links Configuration User Guide
Symbolic Links:
Description:
This section defines symbolic links to be created in the filesystem. The format used is:
i.e., "source data location": "where the symlink should be created"
This allows applications to access data from a standardized path while storing it in a centralized or dedicated location.
Section: Symbolic Links to Add (symbolic_links_add
)
⚠️ Important:
These symbolic links are critical for application data access.
Do not manually modify or delete these links unless directed by automation or infrastructure team.
Example Entry:
This translates to the following Linux command:
✅ Note: The format in the JSON is
"target": "link_path"
, which matches theln -s <target> <link>
Linux syntax.
All entries follow this pattern. The full configuration is provided below.
🧩 Full Sample JSON Configuration
💡 Usage Notes
- Ensure the target directories (e.g.,
/logging/datasys/tdr_logs
) exist before creating the symbolic links. - The
ln -s
command must be run with appropriate permissions (usually asroot
or viasudo
). - Verify links after creation:Output should show:bash
Let me know if you'd like to update the key name in the JSON to make it clearer (e.g., create_symlink: { "target": "link" }
), or if you want this formatted with Confluence panels and code blocks for direct paste.ge Notes
- Ensure the target directories exist before creating symbolic links.
- These links are typically created during system provisioning.
- Broken links can cause application failures — verify during deployment.
Comments
Post a Comment