Load EVE-NG Images (HyOps)¶
Execution context: Run this procedure from a terminal where hyops --help
succeeds. If HybridOps.Core is not installed, complete the
Quickstart.
For deployment support, use
GitHub Discussions.
- Purpose: Stage and install EVE-NG images from URL, local, or remote sources onto an existing EVE-NG host.
- Trigger: Initial topology content load, curriculum refresh, or controlled image catalog update.
- Impact: Writes under
/opt/unetlab/addonson the target EVE-NG host. - Severity: P2
-
Pre-reqs: Base EVE-NG service is already ready, SSH access works, and source paths or URLs are approved.
-
Rollback strategy: Run
hyops destroywith expliciteveng_images_destroy_paths, or rebuild the host from a clean baseline if broad image cleanup is required.
Context¶
This runbook covers platform/linux/eve-ng-images, the content-layer module used after platform/linux/eve-ng is ready.
Supported source modes:
urllocalremote
The module is intentionally separate from the base EVE-NG blueprint so shared, academy, and instructor lanes can reuse the same foundation with different image catalogs.
Preconditions and safety checks¶
- Correct environment selected (
--env <env>). - Base EVE-NG module state is
ok. - Source images are approved for the target lane.
- Any required IOL licence was obtained legitimately for this EVE-NG host.
- URL downloads are reachable, or local/remote sources are accessible from the execution runner.
- For destructive cleanup,
eveng_images_destroy_pathsonly contains paths under/opt/unetlab/addons/.
Steps¶
For an authorised IOL image on EVE-NG Community Edition, store its host-bound licence before validation:
hyops secrets set --env <env> \
--from-file EVENG_IOL_LICENSE=/path/to/iourc
The local filename is not retained. The role installs the material as
/opt/unetlab/addons/iol/bin/iourc and requires a licence entry for the
observed EVE-NG hostname.
Set load_vault_env: true, include EVENG_IOL_LICENSE in required_env, and
set eveng_images_iol_license_required: true in the module inputs. Do not add
the licence file to the image archive.
-
Validate inputs
hyops validate --env <env> \ --module platform/linux/eve-ng-images \ --inputs "$HYOPS_CORE_ROOT/modules/platform/linux/eve-ng-images/examples/inputs.min.yml" -
Preflight
hyops preflight --env <env> --strict \ --module platform/linux/eve-ng-images \ --inputs "$HYOPS_CORE_ROOT/modules/platform/linux/eve-ng-images/examples/inputs.min.yml" -
Apply
hyops apply --env <env> \ --module platform/linux/eve-ng-images \ --inputs "$HYOPS_CORE_ROOT/modules/platform/linux/eve-ng-images/examples/inputs.min.yml" -
Verify state
cat $HOME/.hybridops/envs/<env>/state/modules/platform__linux__eve-ng-images/latest.json
Check:
statusisokoutputs.cap.lab.eveng.imagesis presentoutputs.eveng_images_requested_countmatches the intended batch-
outputs.eveng_images_iol_license_readyistruewhen aniourcwas supplied -
Controlled cleanup
hyops destroy --env <env> \ --module platform/linux/eve-ng-images \ --inputs "$HYOPS_CORE_ROOT/modules/platform/linux/eve-ng-images/examples/inputs.min.yml"
Verification¶
- Target host contains the expected image directories under
/opt/unetlab/addons/. - IOL binaries are executable and
iourchas the EVE-NG-normalised file mode. - An authorised IOL node starts successfully after a host rebuild. This is the definitive check because the licence is bound to the EVE-NG host identity.
- State file:
$HOME/.hybridops/envs/<env>/state/modules/platform__linux__eve-ng-images/latest.json - Logs:
$HOME/.hybridops/envs/<env>/logs/module/platform__linux__eve-ng-images/<run_id>/
Post-actions and clean-up¶
- Remove temporary staging or controller-side source files if they were created for one-off imports.
- Update curriculum or inventory references if image names changed.
- Keep image runs separate from topology-content runs so troubleshooting stays clean.