Skip to content

Commit 45a9eb5

Browse files
author
Harika
committed
adding custom iso scripts and model deployment guides
Signed-off-by: Harika <codewith3@gmail.com>
1 parent 34bfcfa commit 45a9eb5

6 files changed

Lines changed: 422 additions & 40 deletions

File tree

third_party/Dell/README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

third_party/Dell/ubuntu-22.04/iac/README.md

Lines changed: 62 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,38 @@ The solution cleanly separates:
88
- Boot orchestration (Terraform)
99
- Post-OS configuration and inference deployment
1010

11-
It is designed for repeatable, resumable, and operator-friendly deployments.
11+
---
12+
13+
## 0. Create Custom Ubuntu ISO (Optional but Recommended)
14+
15+
**Script:** [custom-iso.sh](./iso/custom-iso.sh)
16+
17+
Before mounting the Ubuntu ISO to iDRAC, you may optionally generate a custom Ubuntu 22.04.5 ISO designed for fully unattended installation.
18+
19+
This enables a zero-touch, fully automated OS installation, eliminating manual input during setup and ensuring consistent, repeatable provisioning.
20+
21+
**Host Your Custom ISO (Recommended for Automation)**
22+
23+
After generating the ISO:
24+
25+
1. Upload it to a web-accessible location (e.g., Firebase Hosting, internal web server, object storage, or any HTTP/HTTPS file server).
26+
27+
2. Ensure the ISO is reachable via a public or internally accessible HTTP/HTTPS URL.
28+
29+
3. Save this URL — it will be required in the next step when mounting the ISO using iDRAC Redfish Virtual Media.
30+
31+
Example:
32+
```bash
33+
https://your-domain.com/ubuntu-22.04.5-custom.iso
34+
```
35+
36+
If you already have a prebuilt ISO hosted and accessible via HTTP/HTTPS, you may skip this step and proceed to Step 1: Mount Ubuntu ISO.
37+
38+
For detailed instructions on building a custom ISO, refer to: [ISO Creation Guide](./iso/README.md)
1239

1340
---
1441

15-
### 1. Mount Ubuntu ISO (iDRAC Redfish)
42+
## 1. Mount Ubuntu ISO (iDRAC Redfish)
1643

1744
**Script:** [iac/mount-iso.sh](./mount-iso.sh)
1845

@@ -27,6 +54,19 @@ export IDRAC_IP=100.67.x.x
2754
export IDRAC_USER=root
2855
export IDRAC_PASS=calvin
2956
```
57+
**Specify Custom ISO URL**
58+
59+
If you created and hosted a custom ISO in above step, pass its HTTP/HTTPS URL using:
60+
```bash
61+
export ISO_URL=https://your-domain.com/ubuntu-22.04.5-custom.iso
62+
```
63+
64+
This should be the URL you generated and hosted in the previous step.
65+
66+
You may also use any internally hosted ISO that is reachable by iDRAC.
67+
68+
> Note: If ISO_URL is not provided, the script will automatically use the default Ubuntu 22.04 Live Server ISO. it will Launch the standard installer and Prompt for manual user input during OS installation.
69+
3070
**Mount ISO**
3171
```bash
3272
chmod +x mount-iso.sh
@@ -40,15 +80,9 @@ chmod +x mount-iso.sh
4080

4181
Terraform uses the **Dell Redfish provider** to configure a **one-time boot from Virtual Media (CD)** and **force a reboot**.
4282

43-
Key Notes
44-
- ISO must already be mounted using mount-iso.sh
45-
- Boot override is set to Once
46-
- Power reset is forced using redfish_power
47-
- Boot mode (UEFI/Legacy) is not configurable on 17G servers
48-
4983
**Terraform Installation (Client Machine)**
5084

51-
> **Note:** Terraform is executed from a client machine (such as your laptop or a jump host), not from the target server or iDRAC.
85+
Terraform is executed from a client machine (such as your laptop or a jump host), not from the target server or iDRAC.
5286

5387
Install Terraform on the machine where you will run the Terraform commands.
5488

@@ -99,18 +133,6 @@ Once OS is installed, Download the deploy-enterprise-inference.sh script to your
99133

100134
This script performs **all post-OS configuration** and deploys the **Enterprise Inference stack** on a **single node**.
101135

102-
**Key Features**
103-
- Resume / checkpoint support
104-
- Safe to re-run after failure
105-
- CPU or Gaudi3 support
106-
- Automated configuration of:
107-
- Packages
108-
- Repo clone + branch checkout
109-
- Inventory & config files
110-
- Firmware & kernel tuning (Gaudi3)
111-
- SSH, sudo, certificates
112-
- Final inference stack deployment
113-
114136
**Change permission to your file**
115137

116138
```bash
@@ -127,19 +149,24 @@ sudo ./deploy-enterprise-inference.sh \
127149
-a cluster-url \
128150
-m "1" \
129151
```
130-
131-
| Option | Description |
132-
| -------| ------------ |
133-
| -u | OS username |
134-
| -p | OS userpassword |
135-
| -t | Hugging Face token |
136-
| -g | gaudi3 or cpu |
137-
| -m | Choose model ID from [Pre-Integrated Models List](#pre-integrated-models-list) , based on your deployment type (gaudi or cpu) |
138-
| -b | Repo branch (default: release-1.4.0) |
139-
| -a | cluster -url |
140-
| -r | Resume from last checkpoint |
141-
| -d | keycloak or genai, by default set to keycloak |
142-
| -o | off or on, by default observability set to off |
152+
### Options & Defaults
153+
154+
| Option | Required | Default | Description |
155+
|--------|----------|----------|-------------|
156+
| `-u, --username` | Yes (deploy & uninstall) | (none) | Enterprise Inference owner username. Must match the invoking (sudo) user. |
157+
| `-t, --token` | Yes (deploy only) | (none) | Hugging Face access token used to validate and download selected models. |
158+
| `-p, --password` | No | `Linux123!` | User sudo password used for Ansible become operations. |
159+
| `-g, --gpu-type` | No | `gaudi3` | Deployment target type: `gaudi3` or `cpu`. |
160+
| `-m, --models` | No | `""` (interactive mode) | Choose model ID from [Pre-Integrated Models List](#pre-integrated-models-list) , based on your deployment type (gaudi or cpu) . If not provided, deployment runs interactively. |
161+
| `-b, --branch` | No | `release-1.4.0` | Git branch of the Enterprise-Inference repository to clone. |
162+
| `-f, --firmware-version` | No | `1.22.1` | Gaudi3 firmware version (applies only when `-g gaudi3`). |
163+
| `-d, --deployment-mode` | No | `keycloak` | Deployment mode: `keycloak` (Keycloak + APISIX) or `genai` (GenAI Gateway). |
164+
| `-o, --observability` | No | `off` | Enable observability components: `on` or `off`. |
165+
| `-r, --resume` | No | Auto-detected | Resume deployment from last checkpoint if state file exists. |
166+
| `-s, --state-file` | No | `/tmp/ei-deploy.state` | Custom path for deployment state tracking file. |
167+
| `-a, --api-fqdn` | No | `api.example.com` | API Fully Qualified Domain Name used for `/etc/hosts` and TLS certificate generation. |
168+
| `uninstall` | Yes (for uninstall action) | (none) | Removes deployed Enterprise Inference stack and cleans up state. |
169+
143170

144171
**Resume After Failure**
145172

@@ -269,6 +296,7 @@ if EI is deployed with apisix, follow [Testing EI model with apisix](../EI/singl
269296
if EI is deployed with genai, follow [Testing EI model with genai](../EI/single-node/user-guide-genai.md#5-test-the-inference) for generating api-key and testing the inference
270297

271298
---
299+
272300
## Additional Information
273301

274302
### Pre-Integrated Models List
@@ -321,5 +349,3 @@ Refer to the [Model Deployment guide](./model-deployment.md) and run the interac
321349
This repository provides a clean, deterministic, enterprise-grade deployment pipeline for:
322350

323351
Bare-metal Ubuntu + Enterprise Inference (CPU/Gaudi3)
324-
325-
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Ubuntu Autoinstall ISO Builder
2+
3+
This provides a single script (`custom-iso.sh`) that builds an Ubuntu Server autoinstall ISO. The script:
4+
5+
- Generates `user-data` and `meta-data` on the fly from CLI options.
6+
- Accepts a local ISO file path or downloads an ISO from a URL.
7+
- Preserves boot settings from the input ISO so the output remains bootable.
8+
9+
## Prerequisites
10+
11+
### Linux
12+
- `bash`
13+
- `curl`
14+
- `rsync`
15+
- `xorriso`
16+
- `sudo`
17+
- `mount`/`umount`
18+
19+
Example (Ubuntu/Debian):
20+
21+
```bash
22+
sudo apt-get update
23+
sudo apt-get install -y curl rsync xorriso
24+
```
25+
26+
### macOS
27+
- `bash` (default)
28+
- `curl` (default)
29+
- `rsync` (Homebrew recommended)
30+
- `xorriso` (Homebrew)
31+
32+
Install on macOS:
33+
34+
```bash
35+
brew install xorriso rsync
36+
```
37+
38+
## Usage
39+
40+
The script requires `--hostname`, `--username`, and `--password-hash`. All other values have defaults.
41+
42+
Basic example using a local ISO:
43+
44+
```bash
45+
./custom-iso.sh \
46+
--hostname=ubuntu-server-001 \
47+
--username=user \
48+
--iso=./ubuntu-22.04.5-live-server-amd64.iso
49+
```
50+
51+
Full example with all options:
52+
53+
```bash
54+
./custom-iso.sh \
55+
--hostname=ubuntu-server-001 \
56+
--username=user \
57+
--password-hash='$6$Sl0xydNgA3rBk1Uo$Pj7oVVI7smkdBh20V8EyLivWpKDHFueUhvrfwxundGp/DQrAuTHjIxnrCZIMVJ1zcTIJ7VgIWKu0mUZmiRsqv0' \
58+
--ssh-key='' \
59+
--timezone=America/Chicago \
60+
--locale=en_US.UTF-8 \
61+
--kbd-layout=us \
62+
--kbd-variant='' \
63+
--storage-layout=direct \
64+
--instance-id=ubuntu-server-001 \
65+
--packages='' \
66+
--iso=./ubuntu-22.04.5-live-server-amd64.iso \
67+
--iso-url=https://releases.ubuntu.com/jammy/ubuntu-22.04.5-live-server-amd64.iso \
68+
--iso-name=ubuntu-22.04.5-live-server-amd64.iso \
69+
--out-iso=ubuntu-22.04.5-autoinstall.iso \
70+
--volid=Ubuntu-Server-22.04.5-AI
71+
```
72+
73+
Notes:
74+
- If `--iso` is provided, `--iso-url` and `--iso-name` are ignored.
75+
- If `--ssh-key` is empty, no SSH key is embedded.
76+
- `--packages` is a comma-separated list (e.g., `--packages=openssh-server,curl`).
77+
- `--volid` must be 32 characters or fewer.
78+
79+
## Options and Defaults
80+
81+
| Option | Required | Default | Description |
82+
|---|---|---|---|
83+
| `--hostname` | Yes | (none) | Hostname for the installed system. |
84+
| `--username` | Yes | (none) | Primary user name. |
85+
| `--password-hash` | Yes | (none) | SHA-512 password hash for the user. |
86+
| `--ssh-key` | No | `""` | SSH public key (optional). |
87+
| `--timezone` | No | `America/Chicago` | System timezone. |
88+
| `--locale` | No | `en_US.UTF-8` | Locale. |
89+
| `--kbd-layout` | No | `us` | Keyboard layout. |
90+
| `--kbd-variant` | No | `""` | Keyboard variant (optional). |
91+
| `--storage-layout` | No | `direct` | Storage layout. Use `direct` for whole disk or `lvm`. |
92+
| `--instance-id` | No | `ubuntu-server-001` | Cloud-init instance ID. |
93+
| `--packages` | No | `""` | Comma-separated package list. |
94+
| `--iso` | No | `""` | Local ISO file path. |
95+
| `--iso-url` | No | Ubuntu 22.04.5 URL | Download ISO from URL. |
96+
| `--iso-name` | No | `ubuntu-22.04.5-live-server-amd64.iso` | Filename for downloaded ISO. |
97+
| `--out-iso` | No | `ubuntu-22.04.5-autoinstall.iso` | Output ISO filename. |
98+
| `--volid` | No | `Ubuntu-Server-22.04.5-AI` | ISO volume ID (max 32 chars). |
99+
100+
## Output
101+
102+
The script writes the rebuilt ISO to the path specified by `--out-iso` (default `ubuntu-22.04.5-autoinstall.iso`).
103+
104+
## UTM Test Notes (macOS)
105+
106+
If testing in UTM and you see a `Shell>` prompt:
107+
- On Apple Silicon, you must use **Emulate → x86_64** for this amd64 ISO.
108+
- In the UEFI shell, type `exit`, then select the CD/DVD boot entry.
109+
110+
If the installer logs repeatedly mention networking updates, verify UTM’s network mode is set to **Shared** or **Bridged**.

0 commit comments

Comments
 (0)