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