ovftool使用部署——導出ova/ovf模板


簡介  

OVF(Open Virtualization Format)是多家虛擬化廠商和硬件廠商共同定義的一個虛擬設備的規范,ovf格式的虛擬設備(其實就是一些文件)可以被多家虛擬化軟件設備並import到虛擬化環境,比如VMware、XenServer、VirtualBox等等。OVF一般有幾個部分組成,分別是ovf文件、mf文件、cert文件、vmdk文件和iso文件。OVF(Open Virtualization Format:開放虛擬化格式 )和OVA(Open Virtualization Appliance:開放虛擬化設備),兩者包含所有用於部署虛擬機的必要信息。現在很多軟件廠商經常將一個應用直接打包成ovf或ova格式的虛擬設備提供給用戶導入到虛擬化環境,比如VMware、Riverbed等等很多公司都有產品通過這種方式發布,這方便了用戶部署。

VMware提供ovf、ova模板的部署和導出功能,在手動部署的時候有時會出現無法部署或者部署過程中出錯的情況,尤其在大文件部署的時候突然中斷很是讓人頭疼,這里介紹一個工具:ovftool。官網提供多個版本的下載,建議在linux和mac上使用,具體下載鏈接見后面。

安裝

VMware官網下載,下載之前需要先注冊賬號,下載鏈接如下:

https://my.vmware.com/cn/web/vmware/details?downloadGroup=OVFTOOL410&productId=491

以ubantu為例:

#下載下來之后,直接sh 運行即可:
root@ubuntu:~# sh VMware-ovftool-4.1.0-2459827-lin.x86_64.bundle

centos詳細安裝過程:

 

1、將光盤掛載到系統/mnt目錄下。

[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt

2、將VMware Tools安裝包“VMwareTools-9.10.0-2476743.tar.gz”復制到/root目錄下

[root@localhost ~]# cp /mnt/cdrom/VMwareTools-9.10.0-2476743.tar.gz /root  

3、將文件解壓,解壓后的目錄為“vmware-tools-distrib”

[root@localhost ~]# tar -xzf VMwareTools-9.10.0-2476743.tar.gz

4、安裝程序,位於vmware-tools-distrib的目錄,進入到該目錄執行安裝程序

[root@localhost ~]# cd vmware-tools-distrib

[root@localhost vmware-tools-distrib]# ./vmware-install.pl

如果出現錯誤“-bash: ./vmware-install.pl: /usr/bin/per: bad interpreter: No such file or directory”表明未安裝語言環境,安裝程序是perl語言,需要安裝perl環境。

[root@localhost vmware-tools-distrib]# yum -y install perl

perl安裝完成之后,再執行/vmware-install.pl安裝,根據提示應答安裝(基本一路回車)。
5、其它問題:在安裝vmware tool的過程中,出現如下提示:

What is the location of the "ifconfig" program on your machine?

此處回車不行,安裝程序檢測系統有沒有“ifconfig”命令工具,VMware Tools 對網絡的管理需要該工具,可以輸入“yes”跳過檢查,繼續進行安裝。

Yum安裝ifconfig(建議在安裝VMware Tools 之前安裝好):
[root@localhost vmware-tools-distrib]#  yum install net-tools

6、如需卸載VMware Tools,輸入/usr/bin/vmware-uninstall-tools.pl即可。

  

使用

OVA/OVF模板部署

ovftool安裝完即可用,其userguide文檔里提供了很多可選參數,下面是我實際使用過程中用的一個語法,基本包含了可能會用到的幾個參數:

ova文件導入到 Vcente#將ova文件導入到 Vcenter

ovftool --X:logLevel=verbose \
--X:logFile=/root/deploy.log \
--noSSLVerify --acceptAllEulas \
-dm=thin -vf=Templates \
-ds=POD01-VOL \
/data/template/centos/CentOS6.5-64bit.ova \
"vi://username:password@Vcenter/host/Host_Name/Host_import_name"

參數詳解:
--X:logLevel:定義log的級別;
--X:logFile:定義log文件位置,以日期的格式命名;
--noSSLVerify:跳過vSphere連接的SSL認證;
--acceptAllEulas:接受所有用戶的licenses;
-dm(--diskMode): 磁盤類型,一般選用thin置備,如果不加此參數,默認硬盤厚置備類型;
-vf(--vmFolder):模板部署的目標目錄(即文件夾),我這里假設要部署到Templates目錄下面;
-ds(--datastore):模板部署的目標存儲位置
vi://:全稱”VMware Infrastructure“

用來和數據中心通信的命令行選項,最早是ESX 3版本的一個術語。
格式:”username:password@vcenter名稱/數據中心名稱/host/指定host“;也可以只指定到cluster。

參數解釋:
/data/template/centos/MyTest-CentOS6.5-64bit-V1.ova 是ova文件的位置;及需要導入的voa鏡像模板
pod01-vcenter是vcenter的名稱;
POD01(TEST-POD)是數據中心的名稱;
host后面接模板部署目標host位置,CLU01代表集群,pod1-clu01-h001.jx.local是集群下的一台宿主機;
需要注意的是,這里的dns要設置好,或者也可用ip地址代替,
例如:
vi://username:password@192.168.1.1/?ip=192.168.100.1'
192.168.1.1是vcenter的地址,192.168.100.1是目標宿主機的ip地址
這里跟vcenter的連接也可以用http的形式,具體詳見官方文檔。


注意:
如果ova/ovf模板網卡里帶portgroup
一塊網卡用參數:-nw或者--network后跟目標網絡;
多個網卡可以用--net指定源和目標portgroup,
格式類似--net:source-portgroup=target-portgroup:

例如:
--net:vlan10-pod01-Test-Private=vlan11-pod01-Test-Private
多個網卡使用多個--net指定。

  

Vcenter導出ova文件 

#導出ova模板文件
ovftool -o \
--powerOffSource \
--acceptAllEulas \
--machineOutput \
--X:logLevel=verbose \
--X:logFile=log.log \
--noSSLVerify \
"vi://username:password@vcenter/datecenter /vm/vmName" /root/vmName.ova

參數解釋 -o(--overwrite):如果導出的文件名已存在,強制重寫; --powerOffSource:確保VM在被導出之前處於關機的狀態; --machineOutput:以機器可讀的格式輸出ovftool的信息; 注意: 另外需要注意的一點是ovftool導出的文件權限問題,默認是600,建議改成644。 #跨vcenter版本時導出需添加參數--noNvramFile 

官方文檔

以下是目前的官方文檔鏈接:

https://www.vmware.com/support/developer/ovf/ovf410/ovftool-410_userguide.pdf

補充說明

批量從vcenter導出腳本

#/bin//bash
for i  in `cat /data/gms/bash/1.txt`
do
ovftool -o --powerOffSource --acceptAllEulas --machineOutput --X:logLevel=verbose --X:logFile=/data/gms/log/$i.log --noSSLVerify "vi://username:password@pod01-vcenter.vsphere.local/POD01(MyDC)/host/SystemTemplates/$i" /data/gms/$i.ova
done

批量將模板導入vcenter

#!/bin/bash
filename=`find /data/gms/ -name *.ova`
# find all ova template
for ova in $filename
do
/usr/bin/ovftool --X:logLevel=verbose --X:logFile=/root/ovflog-`date +%Y%m%d`  --noSSLVerify --acceptAllEulas -dm=thin -vf=Templates -ds=POD1-Template `echo $ova` 'vi://username:password@MyVC/POD01(MyDC)/host/CLU01/pod1-clu01-h001.jx.local'
continue
done

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM