nextdeveloper / iaas
NextDeveloper IAAS Package, generated by NextDeveloper Generator.
Requires
- php: >=8.2.0
- league/fractal: *
- markrogoyski/ipv4-subnet-calculator: 4.*
- monolog/monolog: *
- nextdeveloper/events: >=1.2.0
Requires (Dev)
- illuminate/database: >=8.0
- illuminate/support: >=8.0
- illuminate/validation: >=8.0
- dev-master
- v1.11.71
- v1.11.70
- v1.11.69
- v1.11.68
- v1.11.67
- v1.11.66
- v1.11.65
- v1.11.64
- v1.11.63
- v1.11.62
- v1.11.61
- v1.11.60
- v1.11.59
- v1.11.58
- v1.11.57
- v1.11.56
- v1.11.55
- v1.11.54
- v1.11.53
- v1.11.52
- v1.11.51
- v1.11.50
- v1.11.49
- v1.11.48
- v1.11.47
- v1.11.46
- v1.11.45
- v1.11.44
- v1.11.43
- v1.11.42
- v1.11.41
- v1.11.40
- v1.11.39
- v1.11.38
- v1.11.37
- v1.11.36
- v1.11.35
- v1.11.34
- v1.11.33
- v1.11.32
- v1.11.31
- v1.11.30
- v1.11.28
- v1.11.27
- v1.11.26
- v1.11.25
- v1.11.24
- v1.11.23
- v1.11.22
- v1.11.21
- v1.11.20
- v1.11.19
- v1.11.18
- v1.11.17
- v1.11.16
- v1.11.15
- v1.11.14
- v1.11.13
- v1.11.12
- v1.11.11
- v1.11.10
- v1.11.9
- v1.11.8
- v1.11.7
- v1.11.6
- v1.11.5
- v1.11.4
- v1.11.3
- v1.11.2
- v1.11.1
- v1.11.0
- v1.10.38
- v1.10.37
- v1.10.36
- v1.10.35
- v1.10.34
- v1.10.33
- v1.10.32
- v1.10.31
- v1.10.30
- v1.10.29
- v1.10.28
- v1.10.27
- v1.10.26
- v1.10.25
- v1.10.24
- v1.10.23
- v1.10.22
- v1.10.21
- v1.10.20
- v1.10.19
- v1.10.18
- v1.10.17
- v1.10.16
- v1.10.15
- v1.10.14
- v1.10.13
- v1.10.12
- v1.10.11
- v1.10.10
- v1.10.9
- v1.10.8
- v1.10.7
- v1.10.6
- v1.10.5
- v1.10.4
- v1.10.3
- v1.10.2
- v1.10.1
- v1.10.0
- v1.9.8
- v1.9.7
- v1.9.6
- v1.9.5
- v1.9.4
- v1.9.3
- v1.9.2
- v1.9.1
- v1.9.0
- v1.8.12
- v1.8.11
- v1.8.10
- v1.8.9
- v1.8.8
- v1.8.7
- v1.8.6
- v1.8.5
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.137
- v1.7.136
- v1.7.135
- v1.7.134
- v1.7.133
- v1.7.132
- v1.7.131
- v1.7.130
- v1.7.129
- v1.7.128
- v1.7.127
- v1.7.126
- v1.7.125
- v1.7.124
- v1.7.123
- v1.7.122
- v1.7.121
- v1.7.120
- v1.7.119
- v1.7.118
- v1.7.117
- v1.7.116
- v1.7.115
- v1.7.114
- v1.7.113
- v1.7.112
- v1.7.111
- v1.7.110
- v1.7.109
- v1.7.108
- v1.7.107
- v1.7.106
- v1.7.105
- v1.7.104
- v1.7.103
- v1.7.102
- v1.7.101
- v1.7.100
- v1.7.99
- v1.7.98
- v1.7.97
- v1.7.96
- v1.7.95
- v1.7.94
- v1.7.93
- v1.7.92
- v1.7.91
- v1.7.90
- v1.7.89
- v1.7.88
- v1.7.87
- v1.7.86
- v1.7.85
- v1.7.84
- v1.7.83
- v1.7.82
- v1.7.81
- v1.7.80
- v1.7.79
- v1.7.78
- v1.7.77
- v1.7.76
- v1.7.75
- v1.7.74
- v1.7.73
- v1.7.72
- v1.7.71
- v1.7.70
- v1.7.69
- v1.7.68
- v1.7.67
- v1.7.66
- v1.7.65
- v1.7.64
- v1.7.63
- v1.7.62
- v1.7.61
- v1.7.60
- v1.7.59
- v1.7.58
- v1.7.57
- v1.7.56
- v1.7.55
- v1.7.54
- v1.7.53
- v1.7.52
- v1.7.51
- v1.7.50
- v1.7.49
- v1.7.48
- v1.7.47
- v1.7.46
- v1.7.45
- v1.7.44
- v1.7.43
- v1.7.42
- v1.7.41
- v1.7.40
- v1.7.39
- v1.7.38
- v1.7.37
- v1.7.36
- v1.7.35
- v1.7.34
- v1.7.33
- v1.7.32
- v1.7.31
- v1.7.30
- v1.7.29
- v1.7.28
- v1.7.27
- v1.7.26
- v1.7.25
- v1.7.24
- v1.7.23
- v1.7.22
- v1.7.21
- v1.7.20
- v1.7.19
- v1.7.18
- v1.7.17
- v1.7.16
- v1.7.15
- v1.7.14
- v1.7.13
- v1.7.12
- v1.7.11
- v1.7.10
- v1.7.9
- v1.7.8
- v1.7.7
- v1.7.6
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.71
- v1.6.70
- v1.6.69
- v1.6.68
- v1.6.67
- v1.6.66
- v1.6.65
- v1.6.64
- v1.6.63
- v1.6.62
- v1.6.61
- v1.6.60
- v1.6.59
- v1.6.58
- v1.6.57
- v1.6.56
- v1.6.55
- v1.6.54
- v1.6.53
- v1.6.52
- v1.6.51
- v1.6.50
- v1.6.49
- v1.6.48
- v1.6.47
- v1.6.46
- v1.6.45
- v1.6.44
- v1.6.43
- v1.6.42
- v1.6.41
- v1.6.40
- v1.6.39
- v1.6.38
- v1.6.37
- v1.6.36
- v1.6.35
- v1.6.34
- v1.6.33
- v1.6.32
- v1.6.31
- v1.6.30
- v1.6.29
- v1.6.28
- v1.6.27
- v1.6.26
- v1.6.25
- v1.6.24
- v1.6.23
- v1.6.22
- v1.6.21
- v1.6.20
- v1.6.19
- v1.6.18
- v1.6.17
- v1.6.16
- v1.6.15
- v1.6.14
- v1.6.13
- v1.6.12
- v1.6.11
- v1.6.10
- v1.6.9
- v1.6.8
- v1.6.7
- v1.6.6
- v1.6.5
- v1.6.4
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.33
- v1.5.32
- v1.5.31
- v1.5.30
- v1.5.29
- v1.5.28
- v1.5.27
- v1.5.26
- v1.5.25
- v1.5.24
- v1.5.23
- v1.5.22
- v1.5.21
- v1.5.20
- v1.5.19
- v1.5.18
- v1.5.17
- v1.5.16
- v1.5.15
- v1.4.14
- v1.4.13
- v1.4.12
- v1.4.11
- v1.4.10
- v1.4.9
- v1.4.8
- v1.4.7
- v1.4.6
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.21
- v1.3.20
- v1.3.19
- v1.3.18
- v1.3.17
- v1.3.16
- v1.3.15
- v1.3.14
- v1.3.13
- v1.3.12
- v1.3.11
- v1.3.10
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.26
- v1.1.25
- v1.1.24
- v1.1.23
- v1.1.22
- v1.1.21
- v1.1.20
- v1.1.19
- v1.1.18
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- v0.5.77
- v0.5.76
- v0.5.75
- v0.5.74
- v0.5.73
- v0.5.72
- v0.5.71
- v0.5.70
- v0.5.69
- v0.5.68
- v0.5.67
- v0.5.66
- v0.5.65
- v0.5.64
- v0.5.63
- v0.5.62
- v0.5.61
- v0.5.60
- v0.5.59
- v0.5.58
- v0.5.57
- v0.5.56
- v0.5.55
- v0.5.54
- v0.5.53
- v0.5.52
- v0.5.51
- v0.5.50
- v0.5.49
- v0.5.48
- v0.5.47
- v0.5.46
- v0.5.45
- v0.5.44
- v0.5.43
- v0.5.42
- v0.5.41
- v0.5.40
- v0.5.39
- v0.5.38
- v0.5.37
- v0.5.36
- v0.5.35
- v0.5.34
- v0.5.33
- v0.5.32
- v0.5.31
- v0.5.30
- v0.5.29
- v0.5.28
- v0.5.27
- v0.5.26
- v0.5.25
- v0.5.24
- v0.5.23
- v0.5.22
- v0.5.21
- v0.5.20
- v0.5.19
- v0.5.18
- v0.5.17
- v0.5.16
- v0.5.15
- v0.5.14
- v0.5.13
- v0.5.12
- v0.5.11
- v0.5.10
- v0.5.9
- v0.5.8
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.30
- v0.4.29
- v0.4.28
- v0.4.27
- v0.4.26
- v0.4.25
- v0.4.24
- v0.4.23
- v0.4.22
- v0.4.21
- v0.4.20
- v0.4.19
- v0.4.18
- v0.4.17
- v0.4.16
- v0.4.15
- v0.4.14
- v0.4.13
- v0.4.12
- v0.4.11
- v0.4.10
- v0.4.9
- v0.4.8
- v0.4.7
- v0.4.6
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1
- dev-dev
- dev-feat/telemetry-core-disk-io
- dev-feat/vm-agent-listener
- dev-features/roles/cloud-sales-admin
- dev-features/action/create-account
- dev-fix/add-replications-permission
- dev-fix/add-missing-key-to-update-vm-resquest-class
- dev-laravel-12-compatibility
- dev-add-backup-notif-email
- dev-features/health-checks
- dev-state-notification
- dev-features/actions/service
- dev-features/stats
This package is auto-updated.
Last update: 2026-06-05 15:37:49 UTC
README
Turn any infrastructure into a production-grade IaaS platform in days, not months.
The NextDeveloper IAAS module started as the PlusClouds IaaS service layer and has been battle-tested at scale across multiple cloud regions. It is now fully open-sourced under the NextDeveloper brand so that any business can deliver Infrastructure-as-a-Service to their own customers — without rebuilding the foundation from scratch.
From provisioning a virtual machine to orchestrating cross-node live migrations, managing backup schedules, enforcing resource quotas, and streaming real-time telemetry from in-VM agents, this module handles the complete IaaS lifecycle inside a Laravel application.
What You Get
- Full VM Lifecycle Management — provision, start, stop, pause, restart, snapshot, clone, migrate, export, and destroy
- Multi-hypervisor architecture — production-ready XenServer / Citrix Hypervisor 8.2 driver, pluggable adapter interface for adding others
- Cloud-init & Windows Unattend — automatic per-VM configuration ISO generation for Linux (Ansible) and Windows (PowerShell)
- In-VM Agent — NATS-based agent binary that streams telemetry and accepts remote commands from the platform
- Ansible Automation — built-in playbooks for hostname, password, SSH keys, disk resize, env vars, locale, and agent deploy
- Backup & Disaster Recovery — scheduled backups, multi-level replication, retention policies, heatmaps
- Advanced Networking — VLAN management, IP allocation, DHCP (ISC & KEA), gateway management, ARP-based IP discovery
- Storage Management — storage pools, members, volumes, VDI attach/detach/resize/copy, per-volume statistics
- Compute & Cloud Node Management — datacenter hierarchy, cloud nodes, compute pools, compute members with full resource tracking
- Monitoring & Analytics — per-VM CPU/disk/network metrics, hourly and daily stats, KPI performance, alarm management
- Docker Registry Support — integrated private registry synchronisation and management
- Role-Based Access Control — six built-in roles from CloudSpectator to CloudNodeAdmin, with pluggable custom authorisation
- RESTful API — 100+ resource controllers with consistent filtering, sorting, and pagination out of the box
Hypervisor Support
XenServer / Citrix Hypervisor 8.2
The primary production driver. Every XenServer operation is exposed through a clean service layer so you can call it programmatically or fire it from an Action, a Job, or an Artisan command.
VM Operations
| Operation | Description |
|---|---|
| Start / Stop / Pause / Unpause | Full power-state management |
| Restart / Force Restart | Graceful and forced reboot |
| Shutdown / Force Shutdown | Graceful and hard power off |
| Snapshot | Point-in-time VM snapshot |
| Convert Snapshot → VM | Promote any snapshot to a runnable VM |
| Clone | Full VM clone with new UUID |
| Export / Import | Export to .pvm or a repository; import machine images |
| Live Migration | Cross-node migration via xe vm-migrate |
| Local Migration | Same-host storage migration via dd / rsync over SSH |
| Node Evacuation | Drain all VMs off a compute member |
Storage Operations
| Operation | Description |
|---|---|
| VDI Create / Attach / Detach / Resize / Copy | Full virtual disk lifecycle |
| SR Scan | Force-refresh the XenServer storage repository |
| VBD Management | Manage virtual block device connections |
| CD-ROM Mount / Unmount | Mount and eject ISO images at runtime |
Networking
| Operation | Description |
|---|---|
| VIF Create / Destroy | Virtual network interface management |
| VIF Sync | Reconcile live hypervisor state with the database |
| Bridge / VLAN management | Managed through NetworkMemberXenService |
Metrics Collection
- RRD data pulled via
rrd.pyfrom the XenServer host - IPMI integration via
ipmi.pyfor hardware-level telemetry - XenServer event stream subscription via
events.py
Pluggable Adapter Architecture
Additional hypervisors can be added by implementing three interfaces:
VirtualMachineAdapterInterface— core VM operationsCloneCapableInterface— VM cloningSnapshotCapableInterface— snapshot operationsResizeCapableInterface— CPU / RAM / disk resize
The VirtualMachineManager class resolves the correct adapter at runtime based on the compute member type.
Virtual Machine Features
Provisioning
- Create VMs from marketplace images or repository machine images
- Automatic
agent_api_keygeneration per VM for secure agent authentication - Cloud-init ISO auto-generated and uploaded to the NFS ISO library on every configuration change
- Metadata API endpoint with full VM context for in-guest bootstrap
Configuration ISO (cloud-init / Windows Unattend)
Every VM has a dedicated configuration ISO that is regenerated and re-uploaded automatically whenever VM configuration changes. The ISO includes:
Linux VMs
user-data— cloud-init user datameta-data— instance ID and hostnamepc-meta-data.json— PlusClouds-specific metadata- All Ansible playbooks (see Automation section)
- PlusClouds agent binary +
plusclouds-agent.servicesystemd unit - Optional
post-boot-script.shfor user-defined first-boot commands
Windows VMs
pc-meta-data.json— PlusClouds-specific metadataapply-configuration.ps1— master configuration scriptchange-hostname.ps1,change-password.ps1apply-env-vars.ps1,apply-ssh-keys.ps1register-startup-task.ps1— registers the agent as a Windows startup task
Manually trigger ISO regeneration for any VM:
php artisan leo:update-configuration-iso {uuid}
VM Actions (fully dispatchable jobs)
| Action | Description |
|---|---|
| Start | Boot the VM |
| Shutdown / ForceShutdown | Graceful or hard power off |
| Restart / ForceRestart | Graceful or forced reboot |
| Pause / Unpause | Suspend and resume execution |
| Snapshot | Take a point-in-time snapshot |
| Backup | Run a full VM backup |
| Delete | Destroy the VM and release resources |
| Sync | Reconcile VM state with the hypervisor |
| HealthCheck | Evaluate VM health and update status |
| Commit | Apply pending configuration changes |
| ConvertToTemplate | Promote VM to a reusable template |
| Lock / Unlock | Prevent or allow modifications |
| MountCd / EjectCd | Attach or remove a CD-ROM image |
| Export | Export VM to a repository |
| StateChangeNotification | Fire notifications on power state changes |
Live and Local Migration
- Cross-node migration (
leo:migrate-vm) — interactive propose/approve/execute workflow, supports single-disk and multi-VHD VMs with per-disk storage mapping - Local migration (
leo:migrate-local-vm) — same-host migration usingddorrsyncover SSH when source and target storage are on the same storage member - Node evacuation — drain all running VMs off a compute member safely
PlusClouds VM Agent
Every VM provisioned by the platform receives a lightweight agent that connects back over NATS using mutual TLS.
How It Works
- The agent binary (
plusclouds.linuxorplusclouds.windows) is embedded in the configuration ISO - A unique
agent_api_keyis generated per VM at creation time and injected into the agent config viaagent.yaml - The agent registers itself with the platform on first boot and starts streaming telemetry
- The platform listens on
iaas:vm-agent-listenand evaluates incoming events
Telemetry & Health Evaluation
The NATS listener (ListenVmAgentEvents) receives and processes:
- Per-core CPU usage
- Disk I/O metrics
- Memory utilisation
- Custom system comments from the VM
- Hardware health signals
Health problems are automatically surfaced as VM state comments and can trigger alerts.
Remote Command Dispatch
Commands can be dispatched to any running VM via VmAgentCommandService through the VirtualMachineAgentCommandsController REST endpoint. This enables zero-SSH remote operations on VMs that have the agent running.
Agent Installation (systemd)
sudo nano /etc/systemd/system/plusclouds.service # Paste the contents of plusclouds-agent.service sudo systemctl enable plusclouds.service sudo systemctl daemon-reload sudo systemctl start plusclouds.service
Or use the automated Ansible playbook:
# Included in the VM configuration ISO as deploy-service.yml
Ansible Automation
Built-in playbooks are bundled into every Linux VM's configuration ISO and executed by cloud-init on boot.
| Playbook | Purpose |
|---|---|
apply-configuration.yml |
Master playbook — applies all configuration on first boot |
change-hostname.yml |
Sets the VM hostname |
change-password.yml |
Rotates the root / admin password |
apply-ssh-keys.yml |
Injects authorised SSH public keys |
apply-env-vars.yml |
Writes environment variables |
apply-locale.yml |
Configures system locale |
disk-resize-debian12.yml |
Resizes root disk on Debian 12 |
disk-resize-ubuntu22.yml |
Resizes root disk on Ubuntu 22 |
disk-resize-ubuntu24.yml |
Resizes root disk on Ubuntu 24 |
run-post-boot-script.yml |
Executes the user-provided post-boot script |
run-startup-script.yml |
Runs the startup script on every boot |
deploy-service.yml |
Installs and enables the PlusClouds agent service |
Backup & Disaster Recovery
Backup Engine
- Scheduled backups with configurable retention policies
- Multi-level replication across backup repositories via
BackupJobReplications - Background export using
nohup+xe vm-exportso exports survive SSH disconnects - Backup completion webhooks — the hypervisor calls back to
/public/iaas/finalize-backup/{uuid}on completion - Concurrent export protection — running backup detection prevents double-exports
Backup Actions
| Action | Description |
|---|---|
| RunBackupJob | Execute a scheduled backup job |
| InitiateMultilevelBackupJob | Start a multi-replica backup across repositories |
| FinishBackupJob | Finalise and verify a completed backup |
| DeleteOldBackups | Enforce retention policies and purge expired backups |
| Delete (VirtualMachineBackups) | Delete an individual backup |
Reporting
- Per-VM backup heatmaps (by cloud node and account)
- Backup job statistics and performance history
VmBackupJobsPerspectivefor operational dashboards
Networking
Network Model
The network stack is modelled as a hierarchy: Cloud Node → Network Pool → Network → Network Member → VIF
- VLAN-based network isolation
- ARP-based IP discovery (
UpdateIpsWithArp) for automatic IP reconciliation - IP address lifecycle management: attach / detach / history
- Gateway management: create, commit, delete
DHCP
Two DHCP server implementations are supported:
| Implementation | Service Class |
|---|---|
| ISC DHCP (dhcpd) | IscDhcpServices |
| ISC Kea DHCP | IscKeaServices |
DhcpServers model tracks configuration state; UpdateConfiguration action pushes changes to the active server.
Network Statistics
Per-network and per-pool statistics are collected in hourly and daily intervals, accessible via dedicated perspective models and controllers.
Compute Management
Compute Hierarchy
Datacenter → Cloud Node → Compute Pool → Compute Member → Virtual Machine
Compute Member Features
- Resource tracking: CPU, RAM, storage utilisation
- Service health check with optional re-deployment (
leo:cm-service-check) - ISO and VM repository mount/unmount operations
- Event aggregation and task tracking
- Per-member statistics:
ComputeMemberMetrics,ComputeMemberStats - Network interface scanning and synchronisation
Compute Pool Features
- Pool-level VM scan and import
- Resource aggregation across all members
- ISO 27001 compliance mode (anonymise VM names in hypervisor)
Datacenter Features
- Initiation workflow for new datacenters
- Resource scan and update
- Hierarchical resource reporting
Storage Management
Storage Hierarchy
Storage Pool → Storage Member → Storage Volume → Virtual Disk Image
Storage Volume Features
- Scan and sync with hypervisor SR state
- Volume statistics: utilisation, IOPS, throughput
- Cross-member volume visibility
Virtual Disk Image Features
| Action | Description |
|---|---|
| Create | Provision a new VDI on a storage volume |
| Attach / Detach | Connect or disconnect a disk from a VM |
| Resize | Expand a virtual disk online |
| Copy | Duplicate a VDI to another storage |
| Sync | Reconcile VDI state with the hypervisor |
Repository & Machine Image Management
Repositories
- ISO repositories — NFS-mounted ISO library for cloud-init and OS images
- VM repositories — store exported VM images (
.pvmformat) - Docker registries — integrated private container registry support
Machine Image Actions
| Action | Description |
|---|---|
| SynchronizeIsos | Scan and index all ISOs in the repository |
| SynchronizeMachineImages | Scan and index all VM images |
| SynchronizeDockerImages | Sync Docker image tags from a private registry |
| CloneImage | Clone a repository image to another repository |
| Initiate | Bootstrap a new repository with required directory structure |
Artisan Sync Commands
php artisan leo:sync-repository-machine-images php artisan leo:sync-marketplace-products
Monitoring & Analytics
Per-VM Metrics
- CPU: per-core utilisation, hourly aggregates, alerts on threshold breach
- Disk: per-disk I/O metrics via VDI stats
- Network: per-VIF traffic statistics
- Health: composite health score updated on every
HealthCheckaction run
Platform-Wide Analytics
| Model / Service | Granularity |
|---|---|
| CloudNodeDailyStats / HourlyStats | Per cloud node, hourly and daily |
| ComputeMemberStats / Metrics | Per compute member |
| StorageMemberStats / VolumeStats | Per storage member and volume |
| NetworkStats / NetworkPoolStats | Per network and pool |
| AccountCurrentStats / HourlyStats / HourlyPerformance | Per tenant account |
| VmDailyStats / VmHourlyStats | Per virtual machine |
| KpiPerformance | Platform-level KPIs |
Alarm Management
ActiveAlarmsPerspective— live view of all current alarmsVirtualMachineCpuAlerts— configurable CPU threshold alertingHealthChecksPerformance— historical health check scoring
Ansible Server Integration
For VMs and infrastructure nodes that require configuration management beyond cloud-init:
- AnsibleServers — register Ansible control nodes
- AnsiblePlaybooks — store and version playbooks
- AnsibleRoles — manage reusable Ansible roles
- AnsiblePlaybookExecutions — track every playbook run with full output
- AnsibleSystemPlaybooks / Plays — platform-managed system playbooks for internal operations
Authorization & Roles
| Role | Level | Description |
|---|---|---|
CloudSpectator |
Read-only | View resources without modification rights |
CloudSalesPerson |
Limited | Resource visibility for sales operations |
IaasSuccessManager |
Elevated | Customer success and account management |
DatacenterAdmin |
High | Datacenter administration |
CloudResourceOwner |
Full | Full resource creation and management (NIN-validated for compliance) |
CloudNodeAdmin |
Highest | Complete infrastructure access |
Turkish NIN (National ID Number) validation is built in as an authorisation rule for CloudResourceOwner to satisfy local compliance requirements.
Artisan Commands
| Command | Description |
|---|---|
leo:update-configuration-iso {uuid} |
Regenerate and upload the config ISO for a VM |
leo:sync-virtual-machine [--uuid=] [--fg=] |
Sync one or all VMs with the hypervisor |
leo:vm-health-check |
Run health checks on all active VMs |
iaas:vm-agent-listen |
Start the NATS VM agent telemetry listener |
leo:sync-cloud-node {slug} |
Sync all compute pools under a cloud node |
leo:cm-service-check |
Check and optionally redeploy compute member services |
leo:sync-storage-volume |
Sync storage volumes with the hypervisor |
leo:sync-repository-machine-images |
Scan and index machine images in all repositories |
leo:sync-marketplace-products |
Sync marketplace product catalogue |
leo:migrate-vm |
Interactive cross-node VM migration (propose/approve/execute) |
leo:migrate-local-vm |
Same-host storage migration via dd/rsync |
leo:transfer-vm |
Transfer VM ownership between accounts |
leo:vm-remove-drafts |
Remove VMs stuck in draft state |
leo:vm-remove-lost |
Remove orphaned VMs with no hypervisor record |
Database Models
100+ Eloquent models covering the complete IaaS domain. Every model ships with:
- UUID primary key
- Soft deletes
- Automatic cache invalidation
- Observer-driven event publishing
- Advanced query filters (sortable, searchable, paginated)
- Perspective models for dashboard and reporting queries
Core models include: CloudNodes, Datacenters, ComputePools, ComputeMembers, StoragePools, StorageMembers, StorageVolumes, Networks, NetworkPools, NetworkMembers, VirtualMachines, VirtualDiskImages, VirtualNetworkCards, VirtualMachineBackups, BackupJobs, BackupSchedules, Repositories, RepositoryImages, IpAddresses, Gateways, DhcpServers, AnsibleServers, AnsiblePlaybooks, and many more.
REST API
Every resource is exposed via a consistent RESTful API:
- 100+ controllers covering all resources
- Standard CRUD operations (
index,store,show,update,destroy) - Query filter support on all list endpoints
- Perspective endpoints for aggregated and reporting views
- Action endpoints for triggering VM and infrastructure operations
Support
For support we have man/hour and yearly support packages including:
- Machine images ready for provisioning
- Metadata service for fast VM bootstrap
- Continuous updates and security patches
- Business model consultancy and IaaS architecture design
Support is provided under PlusClouds BV, under the brand called LEO. Please reach out to: sales@plusclouds.com
Our Libraries
This library is part of the NextDeveloper / PlusClouds open-source ecosystem. Browse all available libraries and find the right building blocks for your next project:
https://plusclouds.com/us/solutions/libraries
Join the Community
We believe great software is built together. The PlusClouds developer community is a place where engineers share ideas, ask questions, showcase what they have built, and help shape the direction of these libraries. Whether you are integrating a single package or building an entire platform on top of our stack, you are very welcome here.
Come and join us — we would love to see what you build: