天天看點

Openstack_通用子產品_Oslo_vmware 建立/删除 vCenter 虛拟機目錄oslo.vmwareConnect to vCenter ServerCreate VirtualMachine for vCenter删除虛拟機

<a href="#%E7%9B%AE%E5%BD%95">目錄</a>

<a href="#oslovmware">oslovmware</a>

<a href="#connect-to-vcenter-server">Connect to vCenter Server</a>

<a href="#create-virtualmachine-for-vcenter">Create VirtualMachine for vCenter</a>

<a href="#%E5%B8%B8%E7%94%A8%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%85%8D%E7%BD%AE%E9%A1%B9">常用的虛拟機配置項</a>

<a href="#%E5%88%A0%E9%99%A4%E8%99%9A%E6%8B%9F%E6%9C%BA">删除虛拟機</a>

oslo.vmware 是 Openstack 的通用子產品, 用于連接配接/擷取/操作 vCenter 上的實體資源(Datacenter/CLuster/Host/VirtualMachine…等). Openstack Nova Project 具有一定的 Hypervisor 異構能力, 到 /opt/stack/nova/nova/virt 路徑下可以看見其所支援的虛拟化類型包括了 hyperv/libvirt/xenapi/vmwareapi . 其中 vmwareapi 主要由 oslo.vmware 來提供基礎的接口實作, Nova Project 在此基礎上做了進一步的封裝和重構.

在 vCenter 上建立虛拟機通過調用 <code>Folder.CreateVM_Task()</code> 來實作, 然後使用 <code>VirtualMachine managed object</code> 的屬性和方法來配置這個虛拟機.

<code>Folder.CreateVM_Task()</code> 方法使 用 一 個 VirtualMachineConfigSpec 資料對象作為參數。VirtualMachineConfigSpec 允許你設定建立虛拟機的屬性資訊.你還必須指定一個 Host 或一個 ResourcePool(或兩者都指定)。虛拟機需要占用 Host 或 ResourcePool 裡的 CPU 和記憶體。

NOTE: 假如你在一個獨立的 ESXi 主機上應用 <code>Folder.CreateVM_Task()</code> 方法, 可以省略 <code>host</code> 參數。假如目标主機是 VMware DRS Cluster 裡的一部分, <code>host</code> 參數是可選的. 假如沒有指定主機,系統自動選擇一個。

EXAMPLE:

ERROR 1: 對象不支援該操作

TSG: 檢查 Datacenter 和 Cluster 是否為有效的清單對象, 該例子中的 Datacenter:ECONE 和 Cluster:cluster 均為擁有 Host 且正常運作的資源對象.

ERROR 2: 配置參數錯誤 config.fiile

TSG: 檢查 <code>config_spec</code> 的參數是否符合建立虛拟機的基本要求

NOTE 1: <code>session.invoke_api()</code> 方法, 實際上是調用了指定 module 中的 method, 再将參數集合中其餘的參數作為 method 的實參傳遞到過去, 最後傳回一個 API CALL 的響應.

HELP:

是以如果你感興趣的話, 可以到 module 中看看該 method 是怎麼實作的.

NOTE 2: 需要注意的是, 當 <code>module == session.vim</code> 時, 實際上 module 是一個 VIM Object , 是以在 module 中并沒有 method 的實作, 而是在 class VIM 中實作.

删除虛拟機的邏輯就相對簡單了:

1. 找到虛拟機

2. 執行删除.

當然在實際生産環境中, 我們會将之前建立的或者已經擁有的虛拟機資産資訊存放到資料庫中. 是以擷取 <code>instanceUuid</code> 的途徑就變成了從資料庫擷取.