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