https://jimwayne.blogspot.co.uk/2015/08/python-vmware-vsphere.html
[popexizhi: 原文使用的是python3.0 自己使用2.7 也测试通过了,mark 一下]
pyVmomi [1] 是一個由 VMware 官方釋出的 Python API,可以用來存取 vSphere/vCenter 的資源。
另外有一些簡易的使用範例 [2],可以大略參考要如何開始使用 Python 連接 vSphere/vCenter。
這篇是用來記錄初步介接 vSphere/vCenter 的經驗。
首先,要執行 pyVmomi 的主機必須安裝 pyVmomi 套件,可以簡單地透過 easy_install 或者 pip 來安裝。
接著,程式要跟 vSphere/vCenter 連接,可以使用以下的程式碼:
上述這段程式碼中,假設 vSphere/vCenter 的 IP 是 192.168.200.200
登入的使用者名稱是 administrator@vsphere.local、登入密碼是 qwer。
連線完成後,在連線資訊上可以取得 session ID,表示連線並且登入成功了。
再來的步驟,在 [2] 的不同範例中作法都不太一樣,我自己後來統一的作法都是取得 ContainerView,然後再做後續的解析。
上述程式碼中,CreateContainerView() 這個方法的第二個參數是篩選器,如果只想要特定某種類型的物件,可以在這裡輸入做篩選
沒有輸入的話,預設是會吐回所有的物件。
例如在我的環境中,執行結果如下:
印出來這些物件都是一個個的 Managed Object Type。
舉例來說,vim.VirtualMachine:vm-72 表示這是一個 VM,物件的種類是 vim.VirtualMachine
這時就可以去翻翻 VMware 的官方文件 [3],看看 vim.VirtualMachine 可以取得什麼東西。
假設我的目的是想要獲得 VM 的名字,從官方文件中可以一層層看出,路徑是 vim.VirtualMachine -> summary -> config -> name
所以完整的程式碼,可以用下述的程式碼,讓 pyVmomi 回傳所有 vSphere 上執行的 VM 的名字(的前三個字元)出來:
印出的結果如下:
[popexizhi: 原文使用的是python3.0 自己使用2.7 也测试通过了,mark 一下]
pyVmomi [1] 是一個由 VMware 官方釋出的 Python API,可以用來存取 vSphere/vCenter 的資源。
另外有一些簡易的使用範例 [2],可以大略參考要如何開始使用 Python 連接 vSphere/vCenter。
這篇是用來記錄初步介接 vSphere/vCenter 的經驗。
首先,要執行 pyVmomi 的主機必須安裝 pyVmomi 套件,可以簡單地透過 easy_install 或者 pip 來安裝。
1
| easy_install pyvmomi |
接著,程式要跟 vSphere/vCenter 連接,可以使用以下的程式碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| import atexitimport requestsfrom pyVim import connectfrom pyVmomi import vim # Disable the checking of certification.requests.packages.urllib3.disable_warnings()# Initiate the connection to VMware vSphere.service_instance = connect.SmartConnect( host="192.168.200.200", user="administrator@vsphere.local", pwd="qwer", port=443)atexit.register(connect.Disconnect, service_instance) # Get the session ID from the connection.session_id = service_instance.content.sessionManager.currentSession.keyprint("Session ID: %s" % session_id) |
登入的使用者名稱是 administrator@vsphere.local、登入密碼是 qwer。
連線完成後,在連線資訊上可以取得 session ID,表示連線並且登入成功了。
再來的步驟,在 [2] 的不同範例中作法都不太一樣,我自己後來統一的作法都是取得 ContainerView,然後再做後續的解析。
1
2
3
4
5
| content = service_instance.RetrieveContent()object_view = content.viewManager.CreateContainerView(content.rootFolder, [], True)for obj in object_view.view: print("Object %s" % obj) |
沒有輸入的話,預設是會吐回所有的物件。
例如在我的環境中,執行結果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| Object 'vim.Datacenter:datacenter-2'Object 'vim.Folder:group-v3'Object 'vim.Folder:group-h4'Object 'vim.Folder:group-s5'Object 'vim.Folder:group-n6'Object 'vim.Network:network-14'Object 'vim.Network:network-13'Object 'vim.Datastore:datastore-25'Object 'vim.Datastore:datastore-12'Object 'vim.Datastore:datastore-69'Object 'vim.Datastore:datastore-53'Object 'vim.Folder:group-h61'Object 'vim.Folder:group-h60'Object 'vim.ClusterComputeResource:domain-c7'Object 'vim.ResourcePool:resgroup-8'Object 'vim.HostSystem:host-11'Object 'vim.Folder:group-v62'Object 'vim.Folder:group-v67'Object 'vim.VirtualMachine:vm-39'Object 'vim.VirtualMachine:vm-36'Object 'vim.VirtualMachine:vm-63'Object 'vim.VirtualMachine:vm-40'Object 'vim.VirtualMachine:vm-34'Object 'vim.VirtualMachine:vm-33'Object 'vim.VirtualMachine:vm-41'Object 'vim.VirtualMachine:vm-32'Object 'vim.VirtualMachine:vm-28'Object 'vim.VirtualMachine:vm-26'Object 'vim.VirtualMachine:vm-194'Object 'vim.VirtualMachine:vm-149'Object 'vim.VirtualMachine:vm-70'Object 'vim.VirtualMachine:vm-54'Object 'vim.VirtualMachine:vm-21'Object 'vim.VirtualMachine:vm-19'Object 'vim.VirtualMachine:vm-18'Object 'vim.VirtualMachine:vm-68'Object 'vim.VirtualMachine:vm-16'Object 'vim.VirtualMachine:vm-65'Object 'vim.VirtualMachine:vm-15'Object 'vim.VirtualMachine:vm-58'Object 'vim.VirtualMachine:vm-72' |
舉例來說,vim.VirtualMachine:vm-72 表示這是一個 VM,物件的種類是 vim.VirtualMachine
這時就可以去翻翻 VMware 的官方文件 [3],看看 vim.VirtualMachine 可以取得什麼東西。
假設我的目的是想要獲得 VM 的名字,從官方文件中可以一層層看出,路徑是 vim.VirtualMachine -> summary -> config -> name
所以完整的程式碼,可以用下述的程式碼,讓 pyVmomi 回傳所有 vSphere 上執行的 VM 的名字(的前三個字元)出來:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| import atexitimport requestsfrom pyVim import connectfrom pyVmomi import vim# Disable the checking of certification.requests.packages.urllib3.disable_warnings()# Initiate the connection to VMware vSphere.service_instance = connect.SmartConnect( host="140.92.25.235", user="administrator@vsphere.local", pwd="qwer", port=443)atexit.register(connect.Disconnect, service_instance)# Get the session ID from the connection.session_id = service_instance.content.sessionManager.currentSession.keyprint("Session ID: %s" % session_id)content = service_instance.RetrieveContent()object_view = content.viewManager.CreateContainerView(content.rootFolder, [], True)for obj in object_view.view: if isinstance(obj, vim.VirtualMachine): print("Object %s" % obj.summary.config.name[0:3] + "...") |
印出的結果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Session ID: 52496234-f876-d189-75d1-c4ef41e899ddObject [25...Object [25...Object sc-...Object [25...Object Fos...Object Inc...Object [25...Object ovi...Object A. ...Object CAK...Object VMw...Object cf-...Object sc-...Object CAK...Object vCe...Object C. ...Object B. ...Object vm-...Object [25...Object sc-...Object [25...Object vSp...Object sc-... |
没有评论:
发表评论