alexisducastel/vmwarephp

PHP的vSphere绑定

1.0.0 2014-07-30 15:52 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:52:39 UTC


README

Vmwarephp是一个包含用于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

您可以在https://packagist.org.cn上了解更多关于Composer及其主要仓库的信息。要使用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());

Managed对象也可以通过名称找到

$vhost = new \Vmwarephp\Vhost('vcenter:443', 'Admin', 'password');
$datastore = $vhost->findManagedObjectByName('VirtualMachine', 'myvmname', array('configStatus'));

Managed对象可以是表示\Vmwarephp\ManagedObject的通用Managed对象,或者是Extensions目录中定义的Managed对象的用户定义扩展。每个Managed对象根据其管理对象引用类型('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 Managed对象类型已经有内置扩展

$snapshotTask = $virtualMachine->takeSnapshot(array('name' => 'snapshot_name', 'memory' => false, 'quiesce' => false));

所有Managed对象属性都定义为对象访问器。您可以在查找对象时预先获取所有访问器,或者您可以在运行时查询对象属性(请注意,我们没有预先获取configStatus属性)

$virtualMachine = $vhost->findOneManagedObject('VirtualMachine', 'vm-192', array());
$configStatus = $virtualMachine->configStatus;

或者预先获取configStatus

$virtualMachine = $vhost->findOneManagedObject('VirtualMachine', 'vm-192', array('configStatus'));

如您所见,与Managed对象一起工作非常简单。服务器端支持的每个Managed对象方法都映射到\Vmwarephp\ManagedObject或扩展上的方法。属性作为简单的访问器方法公开。所有数据对象属性也映射到它们相应的类型。定义的类型完整列表可以在TypeDefinitions.inc文件中找到。

您可以通过扩展\Vmwarephp\ManagedObject并将其添加到Extensions目录来编写自己的扩展。如果您认为这些扩展非常有用,我们很容易将其集成到主分支中。祝您享受!