Skip to main content

Common workflows

WorkflowSteps
Fresh installClone → make build → sudo make install → symlink/copy config → systemctl enable --now cloud-netconfigd
Validatecnctl status all → curl http://127.0.0.1:5209/api/status → journalctl -u cloud-netconfigd -n 30
Config changeEdit YAML → cnctl apply --dry-run → copy to cloud-network.yaml → systemctl restart cloud-netconfigd
Reload signalcnctl reload (prints systemd guidance) → sudo systemctl reload cloud-netconfigd
Upgrade binarysystemctl stop cloud-netconfigd → replace /usr/bin/cloud-netconfigd and /usr/bin/cnctl → systemctl start cloud-netconfigd
Multi-interface rolloutStart from examples/multi-interface.yaml → set network.interfaces.enabled → enable network.routing.policy_routing

cnctl command reference​

CommandPurpose
cnctl status [system|network|all]Daemon, cloud provider, and interface state (default: all)
cnctl apply [-c PATH] [--dry-run]Validate (and optionally stage) configuration
cnctl reload [--force]Reload guidance (systemd reload)
cnctl versionCLI and license version

Local HTTP API​

EndpointResponse
GET /healthOK
GET /api/statusJSON: status, provider, version
GET /api/cloud/statusOK

Bind address comes from server.listen (default 127.0.0.1:5209).

Debug metadata or routing​

  1. Set logging.level: debug in config.
  2. sudo systemctl restart cloud-netconfigd.
  3. journalctl -u cloud-netconfigd -f.

Runtime state is written under /run/cloud-network (configurable via state.directory).

Operate (CLI)​

  1. Pick the workflow row that matches your job (install, validate, config change, upgrade).
  2. Run the listed commands in order; use --dry-run before any restart that changes routing.
  3. For mutating changes, schedule a maintenance window — policy routes affect egress paths.
  4. Empty / fail: Capture journalctl -u cloud-netconfigd and cnctl status network before retrying.
  5. Success: cnctl status all shows running daemon, expected provider, and addresses on supplementary NICs.