Enroll an AIO-SX Subcloud On-Site¶
Use this procedure to enroll a factory-installed subcloud locally when the System Controller has no network path to the subcloud until the vCSR is configured.
Prerequisites
The System Controller and the subcloud run release r13 or later.
Physical access to the server is available to insert the seed ISO using a USB storage device or a local BMC connection.
The factory installation of the subcloud completed successfully.
The System Controller administrator credentials are available.
The System Controller’s OAM SSL CA certificate is available.
The site-specific configuration, including OAM IP address and vCSR configuration is available.
The following ports are accessible from the subcloud to the System Controller OAM IP address:
Port
Protocol
Purpose
5000
TCP
Keystone authentication. The enrollment script authenticates to the System Controller before triggering enrollment.
8119
TCP
DC Manager API. The enrollment script calls this endpoint to trigger subcloud enrollment.
For the complete list of Distributed Cloud port requirements, see Distributed Cloud Ports Reference.
At a high level, enrollment of an AIO-SX subcloud involves the following steps:
Prepare a seed ISO with the site-specific network configuration, SSL CA certificate, bootstrap values, and vCSR script. See Prepare the Seed ISO for On-Site Enrollment.
Insert the seed ISO into the subcloud server using a USB device or local Redfish virtual media. See Insert the Seed ISO for On-Site Enrollment.
Cloud-init detects the seed ISO, configures the network, and establishes the IPsec tunnel through the vCSR.
The enrollment script authenticates to the System Controller and triggers subcloud enrollment through the DC Manager API.
Enrollment completes and the subcloud reaches
deploy-completestatus. To monitor progress, see Verify Subcloud Enrollment Status.
Prepare the Seed ISO for On-Site Enrollment¶
Procedure
Verify that the factory installation completed successfully.
$ ls /var/lib/factory-install/complete
If the file does not exist, do not proceed. The seed ISO processing depends on this file to start the
cloud-init-seed.service.Obtain the seed configuration template.
Download and extract
nocloud-factory-install.tarthat contains seed ISO contents.Note
For a full description of the directory structure and the scripts executed for each operation mode, see Seed ISO Directory Structure.
Set the mode to on-site enrollment.
Edit
user-dataand set theMODEvariable toonsite-enrollment:runcmd: - | # MODE options: factory-install, onsite-enrollment, onsite-factory-restore, onsite-restore MODE=onsite-enrollment
Update the instance ID.
In
meta-data, change theinstance-idto a unique value different from the one used during factory install:instance-id: iid-onsite-enroll-01
Note
Cloud-init applies user-data once per instance-id. A new ID is required to trigger cloud-init processing.
Configure the network.
Edit
network-configwith the site’s OAM IP, VLAN, interface, and gateway information so that the subcloud can reach the System Controller after enrollment.Add the SSL CA certificate.
Place the System Controller’s OAM SSL CA certificate file into the
config/directory.Prepare bootstrap and install values.
Create
config/bootstrap-values.yamlwith:ssl_ca_cert: filename of the CA cert from the previous stepSite-specific bootstrap parameters (same as standard enrollment)
Place install values and deployment configurations in
config/.Add the vCSR configuration script (if applicable).
Replace
cloud-init-config/scripts/20-vcsr-configwith the actual vCSR configuration script and data files for the site.Generate the seed ISO.
$ genisoimage -o seed.iso -volid 'CIDATA' \ -untranslated-filenames -joliet -rock -iso-level 2 \ nocloud-factory-install/
Seed ISO Directory Structure¶
The seed ISO for on-site operations extends the base
nocloud-factory-install structure with new directories for each on-site
operation:
nocloud-factory-install/
├── meta-data
├── user-data
├── network-config
├── nocloud_utils/ # Shared utility scripts
├── config/
│ ├── bootstrap-values.yaml # Enrollment/restore parameters
│ ├── install-values.yaml # BMC and OAM values
│ ├── deployment-config.yaml # Deployment configuration
│ ├── restore-values.yaml # Restore parameters (restore only)
│ └── <ssl-ca-cert-file> # SC OAM SSL CA certificate
├── cloud-init-config/
│ └── scripts/
│ ├── 10-platform-reconfig # Network reconfiguration
│ └── 20-vcsr-config # vCSR setup (site-specific)
├── onsite-enrollment/ ◄── Used by on-site enrollment
│ └── scripts/
│ └── 90-enroll-subcloud # Authenticates to SC, triggers enrollment
├── onsite-restore/ ◄── Used by on-site restore (Scenarios 1 & 2)
│ └── scripts/
│ ├── 90-send-onsite-restore-request # Send restore request to SC
│ └── 95-trigger-onsite-local-restore # Triggers local restore
├── onsite-factory-restore/ ◄── Used by factory restore (Scenario 3)
│ └── scripts/
│ └── 10-trigger-reinstall # Triggers reinstall from prestaged data
├── factory-install/ # Original factory install services
│ ├── scripts/
│ ├── setup/
│ ├── systemd/
│ └── tests/
└── seed-config/
├── 99-seediso.rules # Udev rule for seed ISO detection
├── cloud-init-seed.service # Systemd service triggered by udev
├── cloud.cfg
└── run-cloud-init-from-seed.sh # Main seed processing script
The user-data MODE variable selects which scripts are executed:
MODE value |
Scripts executed |
|---|---|
|
Original factory install (uses |
|
|
|
|
|
|
Insert the Seed ISO for On-Site Enrollment¶
You must insert the seed ISO locally using one of the following methods.
Use a USB Storage Device
Write the seed ISO to a USB storage device.
Plug the USB device into the server.
Power on the server if it is not already running. The system boots from the installed software and uses the seed ISO on the USB device as a data source.
If the server is already running, wait until the system is stable and no active alarms are present before inserting the USB device. Cloud-init automatically detects the seed ISO and starts processing it.
Use Local Redfish Virtual Media
Use this method when you have local access to the BMC through Redfish, for example from a laptop connected to the BMC management port.
Place the seed ISO in a location accessible by the BMC, such as a local HTTP server or a temporary HTTP server running on a laptop.
Insert the seed ISO using the
rvmc_install.pyscript, which is provided with the StarlingX system and uses the Redfish API to mount the ISO as virtual media on the server:$ sudo rvmc_install.py --config_file rvmc-config.yaml \ --subcloud_name <name> --debug 1 \ --excluded_operations "set_boot_override,poweroff_host"
Example
rvmc-config.yamlfile:bmc_address: <bmc_ip> bmc_username: <username> bmc_password: <base64_encoded_password> image: http://<server_ip>:<port>/seed.iso
Power on the server if it is not already running. The seed ISO is used as a data source.
If the server is already running, cloud-init automatically detects the virtual media and starts processing it.
Note
The boot order does not need to be changed. The server continues to boot from the installed software.
Results
After cloud-init detects the seed ISO, it automatically performs the following actions:
The network configuration is applied, including the OAM IP address.
The vCSR configuration script runs, establishing the IPsec tunnel.
The enrollment script authenticates to the System Controller’s Keystone.
The enrollment script invokes dcmanager subcloud add --enroll with the
on_site=trueoption.The System Controller continues the enrollment process, skipping the
enroll-initphase because the local setup was already completed on the subcloud.Enrollment completes and the subcloud reaches the
deploy-completestatus.
Note
The subcloud is not managed automatically after enrollment or restore. To manage the subcloud, run the following command from the System Controller:
~(keystone_admin)]$ dcmanager subcloud manage <subcloud-name>
Verify Subcloud Enrollment Status¶
To monitor enrollment progress from the subcloud:
$ tail -f /var/log/cloud-init.log
To view the enrollment status from the System Controller:
~(keystone_admin)]$ dcmanager subcloud show <subcloud-name>
Related Information