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

 

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