使用 Vcenter API 来实现对虚拟机的电源操作

虚拟化系统 0 2143 张长瑞 收藏

在使用 API 之前,我们要查找对应的官方文档,老外的文档都不是很好看,所以需要花费大量的时间。。

Vmware 的 API 文档地址:https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/cis/index.html

当然,这个 API 地址的内容仅涉及到认证部分。

首先,我们在搭建好的 Vcenter 登陆界面找到根证书下载。

下载 Vcenter 的根证书,并且安装到你需要操作 API 的设备上。安装方法请自行搜索。

然后,查看 API 文档的 Authentication 项,查看如何实现 API 认证获取 TOKEN(Session)

一、获取 Session:

Vmware 的认证采用 POST 方式,用户名密码采用 base64 简单加密。

依次点击 CIS> REST APIS> CIS>Session Create Session

POST URL: https://{api_host}/rest/com/vmware/cis/session   这个代表你需要请求的地址,将 {api_host} 换成你的 Vcetner 地址。

Header Parameters 代表需要你提交的参数。

vmware-use-header-authn  这个是一个自定义的文件头。基本不用理会,值一般是 string

Authorization  代表认证信息,也就是你的账号密码。  一般的组合形式为  字符 Basic  加上  base64 (用户名:密码)

如果不知道如何 base64 加密,可使用 https://tool.oschina.net/encrypt?type=3  进行加解密。

例如你的账号是 admin 密码是 admin  那么需要加密的字符串为 admin:admin 加密后为 YWRtaW46YWRtaW4=

提交:

curl -X POST -H "vmware-use-header-authn: string" -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" https://{api_host}/rest/com/vmware/cis/session

  内容自行替换

若你的提交信息正确。你将获取到如下信息

图中 value 值即为我们需要的 session 值,这个值也是之后操作的关键认证信息。

二、对虚拟机进行一些简单操作

在获取到 session 后,我们就可以对虚拟机进行一些简单操作了。

首先我们还是查找官方 API,找到 Vcenter API:https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/

找到 VM 选项:https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/vm/

或者通过 Vcenter 后台来查看具体的 Vcenter API 相关信息

点击对应的 API 即可查看具体的介绍信息。

那么我们以虚拟机的电源操作为例进行简单示例:

2.1、获取 vmware vm (虚拟机) 列表:

curl -H "vmware-api-session-id: ca4668635d4d4f " https://{api_host}/rest/vcenter/vm

通过获取的信息,我们可以得到当前所有 Vcenter 管理下的虚拟机。如上图,第一个迅疾的内存为 49152M。虚拟机的 vm (这个是虚拟机在 Vcenter 内部的标识,也是对虚拟机进行操作的一个基础)。name 是虚拟机的名称,这个名称和你在 Vcenter 树形列表中看到的一致。power_state 为当前虚拟机的电源状态,POWERED_ON 为开启。CPU_count 为虚拟机分配的 CPU 数量。

我们使用了这个操作后获取到虚拟机的 vm 信息。即可对虚拟机进行 API 操作了。

2.2 获取电源信息:https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/rest/vcenter/vm/vm/power/get/

操作方法为 GET:

curl -H "vmware-api-session-id: b00db39f948d13ea1e59b4d6fce56389" https://{api_host}/rest/vcenter/vm/{vm}/power

如上图所示:我们获取到某个 vm 的电源状态是 POWERED_ON, 显示此虚拟机为通电开机状态。

注:这个地方的 {vm} 就是 2.1 获取到信息中的 vm:。

2.3、关闭电源:https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/rest/vcenter/vm/vm/power/stop/post/

操作如下:

curl -X POST -H "vmware-api-session-id: b00db39f948d13ea1e59b4d6fce56389" https://{api_host}/rest/vcenter/vm/{vm}/power/stop

通过以上操作后再执行 2.2 的步骤获取电源状态,目前获取到的电源状态为 POWERED_OFF,显示为电源关闭状态。

2.4、开启电源,电源重置

https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/rest/vcenter/vm/vm/power/start/post/

https://developer.vmware.com/docs/vsphere-automation/v7.0U2-deprecated/vcenter/rest/vcenter/vm/vm/power/reset/post/

都是同样的道理。

2.5 一般来讲,获取状态都采用 GET 方式,而进行操作一般都要采用 POST 方式,所以千万不要出错。


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码