在使用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操作了。
操作方法为GET:
curl -H "vmware-api-session-id: b00db39f948d13ea1e59b4d6fce56389" https://{api_host}/rest/vcenter/vm/{vm}/power
如上图所示:我们获取到某个vm的电源状态是POWERED_ON,显示此虚拟机为通电开机状态。
注:这个地方的{vm}就是2.1获取到信息中的vm:。
操作如下:
curl -X POST -H "vmware-api-session-id: b00db39f948d13ea1e59b4d6fce56389" https://{api_host}/rest/vcenter/vm/{vm}/power/stop
通过以上操作后再执行2.2的步骤获取电源状态,目前获取到的电源状态为POWERED_OFF,显示为电源关闭状态。
2.4、开启电源,电源重置
都是同样的道理。
2.5 一般来讲,获取状态都采用GET方式,而进行操作一般都要采用POST方式,所以千万不要出错。