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

在使用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方式,所以千万不要出错。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章