neuralys / vmwarephp
VMWare vSphere 客户端 for PHP
Requires
- php: >=5.3.2
Requires (Dev)
- mockery/mockery: dev-master
This package is not auto-updated.
Last update: 2024-09-18 18:58:58 UTC
README
Vmwarephp 是一个包含使用 PHP 绑定 vSphere API 的库。您可以使用它来管理 ESX 和 vCenter 服务器。它受到为其他动态类型语言(如 Ruby 的 RbvMomi)构建 vSphere 绑定的其他努力的启发。目前,该库支持从版本 4.1 到 5.1.1 的 vSphere API。
先决条件
Vmwarephp 需要 PHP 版本 5.3.2 或更高版本,并启用了 soap 和 ssl。有关如何从源代码编译 PHP 和启用扩展的更多信息,请参阅:https://php.ac.cn/manual/en/install.php。
安装
Vmwarephp 可以使用 Composer 安装,也可以从其 GitHub 仓库克隆。
使用 Composer
您可以在 Packagist 主页上了解更多关于 Composer 和其主仓库的信息:https://packagist.org.cn。要使用 Composer 安装 Vmwarephp,首先按照 Packagist 主页上的说明安装 Composer。然后,您可以通过在 composer.json 中添加以下行来定义对 Vmwarephp 的依赖:
{
"require": {
"vmwarephp/vmwarephp": "dev-master"
}
}
使用 Git / GitHub
您可以从其 GitHub 仓库克隆最新的开发分支
git clone git://github.com/vadimcomanescu/vmwarephp.git
使用方法
Vmwarephp 旨在提供处理 vSphere 对象所需的最少样板代码。执行操作的 ESX/vCenter 表示为 \Vmwarephp\Vhost 对象。Vhost 对象提供了两种查找方法来获取服务器端 ManagedObjects。以下示例描述了从 ESX/vCenter 收集所有虚拟机及其配置状态的方法
$vhost = new \Vmwarephp\Vhost('vcenter:443', 'Admin', 'password');
$virtualMachines = $vhost->findAllManagedObjects('VirtualMachine', array('configStatus'));
对于收集所有虚拟机及其所有属性(这通常是一个非常昂贵的操作,因为需要遍历许多对象)的方法,您可以这样做:
$virtualMachines = $vhost->findAllManagedObjects('VirtualMachine', 'all');
您可以使用其服务器端 id 来查找指定的对象。例如,查找 id 为 "datastore-182" 的数据存储,不预取任何属性
$vhost = new \Vmwarephp\Vhost('vcenter:443', 'Admin', 'password');
$datastore = $vhost->findOneManagedObject('Datastore', 'datastore-182', array());
也可以通过名称查找管理对象
$vhost = new \Vmwarephp\Vhost('vcenter:443', 'Admin', 'password');
$datastore = $vhost->findManagedObjectByName('VirtualMachine', 'myvmname', array('configStatus'));
管理对象可以是 \Vmwarephp\ManagedObject 表示的通用管理对象,或者是位于 Extensions 目录中定义的管理对象的用户定义扩展。根据其管理对象引用类型('VirtualMachine'、'Datastore' 等),每个管理对象都可以执行由 vSphere API 在该引用类型上定义的任何方法。例如,创建虚拟机快照可以像这样简单
$vhost = new \Vmwarephp\Vhost('vcenter:443', 'Admin', 'password');
$virtualMachine = $vhost->findOneManagedObject('VirtualMachine', 'vm-192', array());
$snapshotTask = $virtualMachine->CreateSnapshot_Task(array('name' => 'snapshot_name', 'memory' => false, 'quiesce' => false));
或者考虑到 VirtualMachine 管理对象类型已经内置了扩展
$snapshotTask = $virtualMachine->takeSnapshot(array('name' => 'snapshot_name', 'memory' => false, 'quiesce' => false));
所有管理对象属性都定义为对象访问器。您可以在查找对象时预取所有访问器,或者您可以动态查询对象的属性(请注意,我们没有预取 configStatus 属性)
$virtualMachine = $vhost->findOneManagedObject('VirtualMachine', 'vm-192', array());
$configStatus = $virtualMachine->configStatus;
或者预取 configStatus
$virtualMachine = $vhost->findOneManagedObject('VirtualMachine', 'vm-192', array('configStatus'));
如您所见,使用管理对象非常简单。服务器端支持的所有管理对象方法都映射到 \Vmwarephp\ManagedObject 或扩展的方法。属性作为简单的访问器方法公开。所有数据对象属性也映射到它们相应的类型。可以在 TypeDefinitions.inc 文件中找到定义的类型列表。
您可以通过扩展 \Vmwarephp\ManagedObject 并将其添加到 Extensions 目录来编写自己的扩展。如果认为扩展非常有用,我们可以轻松将其集成到主分支中。祝您享受!