偶然发现VMware居然提供的有REST API可以与虚拟机交互,这样一来我们就通过编程实现虚拟机的自动化管理了。
VMware版本:VMware Fusion Pro 12.0.0
REST API需要先启动REST服务才可以与之交互。
步骤如下:
创建REST用户名密码
在终端中输入命令vmrest -C
,按提示输入用户名和密码。
启动REST服务
使用命令vmrest
启动REST服务,默认地址为127.0.0.1:8697
,在浏览器中打开该页面,可以看到支持的REST API及相关说明,有主机网络管理、虚拟机管理、虚拟机网络适配器管理、虚拟机电源管理、共享目录管理,涵盖了虚拟机从创建到删除的整个过程。
API交互
来尝试与API交互吧!
以获取虚拟机列表/vms
为例,如果使用curl,格式如下
curl 'http://127.0.0.1:8697/api/vms' -X GET --header 'Accept: application/vnd.vmware.vmw.rest-v1+json' -u 'username:password'
如果使用编程语言自动交互,HTTP Method用GET
,header
加上'Accept: application/vnd.vmware.vmw.rest-v1+json'
,认证方式为Basic Auth,传用户名密码即可。
贴上Python代码
import requests
from requests.auth import HTTPBasicAuth
url = "http://127.0.0.1:8697/api/vms"
headers = {'Accept': 'application/vnd.vmware.vmw.rest-v1+json'}
username = 'username'
password = 'password'
rs = requests.get(url, headers=headers, auth=HTTPBasicAuth(username, password))
print(rs.text)
返回内容如下
当然,REST API只是自动化管理VMware虚拟机的其中一种方式,别的更高级的产品本人目前尚未使用过,等用过了再展开来说。