Skip to content

Operate EVE-NG

Run this procedure from a workstation where hyops --help succeeds. Complete the Quickstart first when Core is not installed.

Use one blueprint reference throughout the lifecycle:

  • gcp/eve-ng@v1 for private GCP compute reached through IAP
  • onprem/eve-ng@v1 for Proxmox capacity

Both paths provide EVE-NG, declared images, health checks, private access, device automation and protected lab continuity.

1. Prepare the environment

Set an environment name and blueprint reference:

ENV=demo-lab
REF=gcp/eve-ng@v1

Prepare the selected target:

hyops setup gcp
hyops init gcp --env "$ENV" --with-cli-login

For Proxmox, use:

hyops setup proxmox
hyops init proxmox --env "$ENV"

Create the EVE-NG credentials before preflight:

hyops secrets ensure \
  --env "$ENV" \
  EVENG_ROOT_PASSWORD \
  EVENG_ADMIN_PASSWORD

2. Initialise and edit the blueprint

On the first run:

hyops blueprint init \
  --env "$ENV" \
  --ref "$REF" \
  --edit

For an existing environment blueprint:

hyops blueprint edit --env "$ENV" --ref "$REF"

Enable only the image entries required by the lab. Each declaration identifies the source URL, destination name, image type and optional display label. Keep proprietary image sources private and use only images you are authorised to run.

For an authorised IOL image, import its licence file into the environment vault:

hyops secrets set \
  --env "$ENV" \
  --from-file EVENG_IOL_LICENSE=/path/to/iourc

Then enable the commented IOL licence and image entries in the environment blueprint. Do not place licence content in YAML. The vault reapplies it when the host is reconstructed. The local filename is not retained: the target path is /opt/unetlab/addons/iol/bin/iourc, and its licence entry must match the EVE-NG hostname.

3. Validate and deploy

hyops blueprint validate --env "$ENV" --ref "$REF"
hyops blueprint plan --env "$ENV" --ref "$REF"
hyops blueprint preflight --env "$ENV" --ref "$REF"
hyops blueprint deploy --env "$ENV" --ref "$REF" --execute

Deployment completes only after the execution host, guest networking, declared images and EVE-NG health checks are ready.

4. Access the lab

Open the private web interface:

hyops blueprint access --env "$ENV" --ref "$REF"

Keep the command running while using the printed loopback URL. On macOS, copy the admin password with:

hyops secrets show --env "$ENV" --raw EVENG_ADMIN_PASSWORD |
tr -d '\n' |
pbcopy

Clear the clipboard after use:

pbcopy </dev/null

For native QEMU VNC consoles:

hyops blueprint access \
  --env "$ENV" \
  --ref "$REF" \
  --native-consoles

Keep the session running. HybridOps follows QEMU nodes started during the session and reports each loopback-only forward:

native console available: vnc://127.0.0.1:<port>

The workstation must have a handler registered for vnc:// links. Use the EVE-NG client pack on Windows, a registered VNC client on macOS or Linux, or select the HTML5 console in EVE-NG. Click the node after its forwarded port is reported.

Close an access session with Ctrl-C. Keep the environment running when more access or automation tests remain.

5. Connect lab networks

  • Connect a node interface to Cloud9 for DHCP and outbound access.
  • Connect a separate management interface to Cloud8 for private workstation automation.

Cloud9 uses gateway and DNS 172.29.129.1. Cloud8 uses management subnet 172.29.128.0/24 and gateway 172.29.128.1.

6. Test device automation

Keep the automation access session running in the first terminal:

hyops blueprint access \
  --env "$ENV" \
  --ref "$REF" \
  --automation

Use a second terminal:

ENV=demo-lab
REF=gcp/eve-ng@v1

hyops blueprint device list --env "$ENV" --ref "$REF"
hyops blueprint device edit --env "$ENV" --ref "$REF"
hyops blueprint device ping --env "$ENV" --ref "$REF" <device-name-or-address>
hyops blueprint device ssh --env "$ENV" --ref "$REF" <device-name>
hyops blueprint device web --env "$ENV" --ref "$REF" <device-name-or-address> --scheme http --port 80
hyops blueprint device shell --env "$ENV" --ref "$REF"

device ssh uses a target name from device list. The list also shows the detected address and configured SSH user. DHCP discovery uses the blueprint default user. Use device edit to set the user, port, identity file or platform. Do not store passwords in the target file. Restart automation access after an edit before using generated Ansible or Nornir files.

device web maps private interfaces to temporary loopback URLs. Use device edit to declare each target's web service; the generated file documents the available fields. Open named targets together, or every declared service:

hyops blueprint device web --env "$ENV" --ref "$REF" <device-1> <device-2>
hyops blueprint device web --env "$ENV" --ref "$REF" --all

One Ctrl-C closes every tunnel. Add --open-all to open every URL in the workstation browser. Appliance certificates may produce the expected local browser warning.

The device shell exports the generated SSH, Ansible, Nornir and proxy settings. Run one command without entering the shell with:

hyops blueprint device run \
  --env "$ENV" \
  --ref "$REF" \
  -- ansible-playbook site.yml

On macOS, use the managed device commands, generated SSH configuration or SOCKS proxy. Direct workstation ICMP to the private management subnet is not the default access model.

7. Preserve or release the environment

Interactive teardown offers keep, archive and destroy, or destroy without an archive:

hyops blueprint destroy --env "$ENV" --ref "$REF" --execute

For a protected non-interactive teardown:

hyops blueprint destroy \
  --env "$ENV" \
  --ref "$REF" \
  --execute \
  --yes \
  --archive-before-destroy

The archive contains lab definitions and selected stopped-QEMU overlay state. Verification must pass before managed compute is released.

Restore the latest verified archive with:

hyops blueprint deploy \
  --env "$ENV" \
  --ref "$REF" \
  --execute \
  --restore-labs

For a disposable test with no state to retain:

hyops blueprint destroy \
  --env "$ENV" \
  --ref "$REF" \
  --execute \
  --yes \
  --skip-archive

References

License: MIT-0 for code, CC-BY-4.0 for documentation