PHPackages                             nextdeveloper/iaas - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. nextdeveloper/iaas

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

nextdeveloper/iaas
==================

NextDeveloper IAAS Package, generated by NextDeveloper Generator.

v1.11.95(4d ago)02.2k↑292.3%[4 issues](https://github.com/nextdeveloper-nl/iaas/issues)MITPHPPHP &gt;=8.2.0

Since Dec 31Pushed 3w agoCompare

[ Source](https://github.com/nextdeveloper-nl/iaas)[ Packagist](https://packagist.org/packages/nextdeveloper/iaas)[ RSS](/packages/nextdeveloper-iaas/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (56)Versions (592)Used By (0)

NextDeveloper IAAS Module
=========================

[](#nextdeveloper-iaas-module)

> **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
------------

[](#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 &amp; 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 &amp; Disaster Recovery** — scheduled backups, multi-level replication, retention policies, heatmaps
- **Advanced Networking** — VLAN management, IP allocation, DHCP (ISC &amp; KEA), gateway management, ARP-based IP discovery
- **Storage Management** — storage pools, members, volumes, VDI attach/detach/resize/copy, per-volume statistics
- **Compute &amp; Cloud Node Management** — datacenter hierarchy, cloud nodes, compute pools, compute members with full resource tracking
- **Monitoring &amp; 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
------------------

[](#hypervisor-support)

### XenServer / Citrix Hypervisor 8.2

[](#xenserver--citrix-hypervisor-82)

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

[](#vm-operations)

OperationDescriptionStart / Stop / Pause / UnpauseFull power-state managementRestart / Force RestartGraceful and forced rebootShutdown / Force ShutdownGraceful and hard power offSnapshotPoint-in-time VM snapshotConvert Snapshot → VMPromote any snapshot to a runnable VMCloneFull VM clone with new UUIDExport / ImportExport to `.pvm` or a repository; import machine imagesLive MigrationCross-node migration via `xe vm-migrate`Local MigrationSame-host storage migration via `dd` / `rsync` over SSHNode EvacuationDrain all VMs off a compute member#### Storage Operations

[](#storage-operations)

OperationDescriptionVDI Create / Attach / Detach / Resize / CopyFull virtual disk lifecycleSR ScanForce-refresh the XenServer storage repositoryVBD ManagementManage virtual block device connectionsCD-ROM Mount / UnmountMount and eject ISO images at runtime#### Networking

[](#networking)

OperationDescriptionVIF Create / DestroyVirtual network interface managementVIF SyncReconcile live hypervisor state with the databaseBridge / VLAN managementManaged through `NetworkMemberXenService`#### Metrics Collection

[](#metrics-collection)

- RRD data pulled via `rrd.py` from the XenServer host
- IPMI integration via `ipmi.py` for hardware-level telemetry
- XenServer event stream subscription via `events.py`

### Pluggable Adapter Architecture

[](#pluggable-adapter-architecture)

Additional hypervisors can be added by implementing three interfaces:

- `VirtualMachineAdapterInterface` — core VM operations
- `CloneCapableInterface` — VM cloning
- `SnapshotCapableInterface` — snapshot operations
- `ResizeCapableInterface` — CPU / RAM / disk resize

The `VirtualMachineManager` class resolves the correct adapter at runtime based on the compute member type.

---

Virtual Machine Features
------------------------

[](#virtual-machine-features)

### Provisioning

[](#provisioning)

- Create VMs from marketplace images or repository machine images
- Automatic `agent_api_key` generation 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)

[](#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

[](#linux-vms)

- `user-data` — cloud-init user data
- `meta-data` — instance ID and hostname
- `pc-meta-data.json` — PlusClouds-specific metadata
- All Ansible playbooks (see Automation section)
- PlusClouds agent binary + `plusclouds-agent.service` systemd unit
- Optional `post-boot-script.sh` for user-defined first-boot commands

#### Windows VMs

[](#windows-vms)

- `pc-meta-data.json` — PlusClouds-specific metadata
- `apply-configuration.ps1` — master configuration script
- `change-hostname.ps1`, `change-password.ps1`
- `apply-env-vars.ps1`, `apply-ssh-keys.ps1`
- `register-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)

[](#vm-actions-fully-dispatchable-jobs)

ActionDescriptionStartBoot the VMShutdown / ForceShutdownGraceful or hard power offRestart / ForceRestartGraceful or forced rebootPause / UnpauseSuspend and resume executionSnapshotTake a point-in-time snapshotBackupRun a full VM backupDeleteDestroy the VM and release resourcesSyncReconcile VM state with the hypervisorHealthCheckEvaluate VM health and update statusCommitApply pending configuration changesConvertToTemplatePromote VM to a reusable templateLock / UnlockPrevent or allow modificationsMountCd / EjectCdAttach or remove a CD-ROM imageExportExport VM to a repositoryStateChangeNotificationFire notifications on power state changes### Live and Local Migration

[](#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 using `dd` or `rsync` over 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
-------------------

[](#plusclouds-vm-agent)

Every VM provisioned by the platform receives a lightweight agent that connects back over NATS using mutual TLS.

### How It Works

[](#how-it-works)

1. The agent binary (`plusclouds.linux` or `plusclouds.windows`) is embedded in the configuration ISO
2. A unique `agent_api_key` is generated per VM at creation time and injected into the agent config via `agent.yaml`
3. The agent registers itself with the platform on first boot and starts streaming telemetry
4. The platform listens on `iaas:vm-agent-listen` and evaluates incoming events

### Telemetry &amp; Health Evaluation

[](#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

[](#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)

[](#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
------------------

[](#ansible-automation)

Built-in playbooks are bundled into every Linux VM's configuration ISO and executed by cloud-init on boot.

PlaybookPurpose`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 &amp; Disaster Recovery
------------------------------

[](#backup--disaster-recovery)

### Backup Engine

[](#backup-engine)

- **Scheduled backups** with configurable retention policies
- **Multi-level replication** across backup repositories via `BackupJobReplications`
- **Background export** using `nohup` + `xe vm-export` so 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

[](#backup-actions)

ActionDescriptionRunBackupJobExecute a scheduled backup jobInitiateMultilevelBackupJobStart a multi-replica backup across repositoriesFinishBackupJobFinalise and verify a completed backupDeleteOldBackupsEnforce retention policies and purge expired backupsDelete (VirtualMachineBackups)Delete an individual backup### Reporting

[](#reporting)

- Per-VM backup heatmaps (by cloud node and account)
- Backup job statistics and performance history
- `VmBackupJobsPerspective` for operational dashboards

---

Networking
----------

[](#networking-1)

### Network Model

[](#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

[](#dhcp)

Two DHCP server implementations are supported:

ImplementationService ClassISC DHCP (dhcpd)`IscDhcpServices`ISC Kea DHCP`IscKeaServices``DhcpServers` model tracks configuration state; `UpdateConfiguration` action pushes changes to the active server.

### Network Statistics

[](#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-management)

### Compute Hierarchy

[](#compute-hierarchy)

Datacenter → Cloud Node → Compute Pool → Compute Member → Virtual Machine

### Compute Member Features

[](#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

[](#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

[](#datacenter-features)

- Initiation workflow for new datacenters
- Resource scan and update
- Hierarchical resource reporting

---

Storage Management
------------------

[](#storage-management)

### Storage Hierarchy

[](#storage-hierarchy)

Storage Pool → Storage Member → Storage Volume → Virtual Disk Image

### Storage Volume Features

[](#storage-volume-features)

- Scan and sync with hypervisor SR state
- Volume statistics: utilisation, IOPS, throughput
- Cross-member volume visibility

### Virtual Disk Image Features

[](#virtual-disk-image-features)

ActionDescriptionCreateProvision a new VDI on a storage volumeAttach / DetachConnect or disconnect a disk from a VMResizeExpand a virtual disk onlineCopyDuplicate a VDI to another storageSyncReconcile VDI state with the hypervisor---

Repository &amp; Machine Image Management
-----------------------------------------

[](#repository--machine-image-management)

### Repositories

[](#repositories)

- **ISO repositories** — NFS-mounted ISO library for cloud-init and OS images
- **VM repositories** — store exported VM images (`.pvm` format)
- **Docker registries** — integrated private container registry support

### Machine Image Actions

[](#machine-image-actions)

ActionDescriptionSynchronizeIsosScan and index all ISOs in the repositorySynchronizeMachineImagesScan and index all VM imagesSynchronizeDockerImagesSync Docker image tags from a private registryCloneImageClone a repository image to another repositoryInitiateBootstrap a new repository with required directory structure### Artisan Sync Commands

[](#artisan-sync-commands)

```
php artisan leo:sync-repository-machine-images
php artisan leo:sync-marketplace-products
```

---

Monitoring &amp; Analytics
--------------------------

[](#monitoring--analytics)

### Per-VM Metrics

[](#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 `HealthCheck` action run

### Platform-Wide Analytics

[](#platform-wide-analytics)

Model / ServiceGranularityCloudNodeDailyStats / HourlyStatsPer cloud node, hourly and dailyComputeMemberStats / MetricsPer compute memberStorageMemberStats / VolumeStatsPer storage member and volumeNetworkStats / NetworkPoolStatsPer network and poolAccountCurrentStats / HourlyStats / HourlyPerformancePer tenant accountVmDailyStats / VmHourlyStatsPer virtual machineKpiPerformancePlatform-level KPIs### Alarm Management

[](#alarm-management)

- `ActiveAlarmsPerspective` — live view of all current alarms
- `VirtualMachineCpuAlerts` — configurable CPU threshold alerting
- `HealthChecksPerformance` — historical health check scoring

---

Ansible Server Integration
--------------------------

[](#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 &amp; Roles
-------------------------

[](#authorization--roles)

RoleLevelDescription`CloudSpectator`Read-onlyView resources without modification rights`CloudSalesPerson`LimitedResource visibility for sales operations`IaasSuccessManager`ElevatedCustomer success and account management`DatacenterAdmin`HighDatacenter administration`CloudResourceOwner`FullFull resource creation and management (NIN-validated for compliance)`CloudNodeAdmin`HighestComplete infrastructure accessTurkish NIN (National ID Number) validation is built in as an authorisation rule for `CloudResourceOwner` to satisfy local compliance requirements.

---

Artisan Commands
----------------

[](#artisan-commands)

CommandDescription`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
---------------

[](#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
--------

[](#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
-------

[](#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:

---

Our Libraries
-------------

[](#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:

---

Join the Community
------------------

[](#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:

###  Health Score

54

—

FairBetter than 96% of packages

Maintenance97

Actively maintained with recent releases

Popularity20

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 96.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

578

Last Release

4d ago

Major Versions

v0.5.77 → v1.0.02025-01-06

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/95028646?v=4)[Harun Barış Bulut](/maintainers/yakari007)[@yakari007](https://github.com/yakari007)

---

Top Contributors

[![yakari007](https://avatars.githubusercontent.com/u/95028646?v=4)](https://github.com/yakari007 "yakari007 (747 commits)")[![ikhalilatteib](https://avatars.githubusercontent.com/u/69690003?v=4)](https://github.com/ikhalilatteib "ikhalilatteib (26 commits)")

---

Tags

cloudcloudcomputingiaasorchestration

### Embed Badge

![Health badge](/badges/nextdeveloper-iaas/health.svg)

```
[![Health](https://phpackages.com/badges/nextdeveloper-iaas/health.svg)](https://phpackages.com/packages/nextdeveloper-iaas)
```

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[google/cloud-core

Google Cloud PHP shared dependency, providing functionality useful to all components.

346132.9M112](/packages/google-cloud-core)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[phpactor/phpactor

PHP refactoring and intellisense tool for text editors

1.9k17.1k1](/packages/phpactor-phpactor)[concrete5/core

Concrete core subtree split

20166.1k52](/packages/concrete5-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
