封隔器 OVA 示例
我遇到了一些其他人很幸运的好例子:
封隔器配置文件
在所有这些示例之间,我创建了自己的配置并确保它们没问题:
<> tree
.
├── ansible
│ ├── main.yml
│ └── requirements.yml
├── centos7.json
├── http
│ └── ks.cfg
├── iso
│ └── CentOS-7-x86_64-Minimal-1708.iso
└── scripts
└── post-install.sh
首先让我们确保打包器配置没问题:
<> packer validate centos7.json
Template validated successfully.
我也在kickstart文件上做了同样的事情(最初它给了我一个警告):
<> ksvalidator http/ks.cfg
The following problem occurred on line 5 of the kickstart file:
Unknown command: unsupported_hardware
但随后指定正确的版本摆脱了警告:
<> ksvalidator -v RHEL7 http/ks.cfg && echo $?
0
我也必须获得最新版本的Python模块来获得Kickstart中的验证工作(并修复一个文件指向正确的模块:orderedset VS有序集,修复程序中所描述的python-pykickstart)。这是使用pip安装的模块的版本:
<> pip2 show pykickstart
---
Metadata-Version: 1.1
Name: pykickstart
Version: 3.7
Summary: Python module for manipulating kickstart files
Home-page: http://fedoraproject.org/wiki/pykickstart
Author: Chris Lumens
Author-email: clumens@redhat.com
License: UNKNOWN
Location: /usr/local/lib/python2.7/dist-packages
Requires:
Classifiers:
Programming Language :: Python :: 3
VMware Player 的 Packer 错误
期间我遇到了几个错误packer build
,以下是我记得的错误:
缺少 Vmware-VIX
最初遇到一个错误,其中vmrum不存在(此处讨论)。为了修复这个错误,我安装了vmware-vix:
<> chmod +x VMware-VIX-1.17.0-6661328.x86_64.bundle
<> sudo ./VMware-VIX-1.17.0-6661328.x86_64.bundle
Extracting VMware Installer...done.
You must accept the VMware VIX API End User License Agreement to
continue. Press Enter to proceed.
然后我看到了 vmrun 可执行文件:
<> rehash
<> which vmrun
/usr/bin/vmrun
仅供参考的是我正在运行的vmplayer版本(这是在 ubuntu 16.04 上):
<> vmware-installer -l
Product Name Product Version
==================== ====================
vmware-player 14.1.1.7528167
vmware-vix 1.17.0.6661328
缺少 qemu-img
然后我看到了以下内容:
<> packer build centos7.json
vmware-iso output will be in this color.
Build 'vmware-iso' errored: Failed creating VMware driver: Unable to initialize any driver for this platform. The errors
from each driver are shown below. Please fix at least one driver
to continue:
* exec: "vmware": executable file not found in $PATH
* exec: "vmware": executable file not found in $PATH
* Neither 'vmware-vdiskmanager', nor 'qemu-img' found in path.
One of these is required to configure disks for VMware Player.
* Neither 'vmware-vdiskmanager', nor 'qemu-img' found in path.
One of these is required to configure disks for VMware Player.
看起来我缺少qemu-img和(或)vmware-diskmanager(看起来我可以从本社区论坛中讨论 的VMware Virtual Disk Development Kit 中获得vmware-diskmanager)。现在我安装了qemu-img,因为它更快:
<> sudo apt install qemu-utils
缺少 /etc/vmware/netmap.conf
然后我遇到了缺少vmplayer配置文件的问题:
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Could not find netmap conf file: /etc/vmware/netmap.conf
==> vmware-iso: Deleting output directory...
Build 'vmware-iso' errored: Could not find netmap conf file: /etc/vmware/netmap.conf
==> Some builds didn't complete successfully and had errors:
--> vmware-iso: Could not find netmap conf file: /etc/vmware/netmap.conf
==> Builds finished but no artifacts were created.
因此,我使用How to Manually Configure VMWARE Networking on Linux Command Line站点的副本创建了一个示例文件,它最终看起来像这样:
<> cat /etc/vmware/netmap.conf
network0.name = "Bridged"
network0.device = "vmnet0"
network1.name = "HostOnly"
network1.device = "vmnet1"
network2.name = "VMNet2"
network2.device = "vmnet2"
network8.name = "NAT"
network8.device = "vmnet8"
缺少 ldconfig
然后我遇到了这条消息:
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting HTTP server on port 8197
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC with the password "SXxWhTkw" to
vmware-iso: vnc://127.0.0.1:5904
==> vmware-iso: Error starting VM: VMware error: /usr/lib/vmware/bin/vmware-vmx: error while loading shared libraries: libXcursor.so.1: cannot open shared object file: No such file or directory
==> vmware-iso: Waiting 4.655373739s to give VMware time to clean up...
==> vmware-iso: Deleting output directory...
Build 'vmware-iso' errored: Error starting VM: VMware error: /usr/lib/vmware/bin/vmware-vmx: error while loading shared libraries: libXcursor.so.1: cannot open shared object file: No such file or directory
我找到了文件
<> sudo updatedb
<> locate libXcursor.so.1
/usr/lib/vmware/lib/libXcursor.so.1
/usr/lib/vmware/lib/libXcursor.so.1/libXcursor.so.1
/usr/lib/vmware-installer/2.1.0/lib/lib/libXcursor.so.1
/usr/lib/vmware-installer/2.1.0/lib/lib/libXcursor.so.1/libXcursor.so.1
并创建了以下文件来加载库:
<> cat /etc/ld.so.conf.d/vmware.conf
/usr/lib/vmware/lib/libXcursor.so.1
<> sudo ldconfig -v | grep vmware -A 1
/usr/lib/vmware/lib/libXcursor.so.1:
libXcursor.so.1 -> libXcursor.so.1
然后虚拟机启动。
dhcpd.conf 文件位置不正确
然后我又遇到了一个问题:
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting HTTP server on port 8383
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC with the password "9B6EsmKN" to
vmware-iso: vnc://127.0.0.1:5963
==> vmware-iso: Waiting 10s for boot...
==> vmware-iso: Connecting to VM via VNC (127.0.0.1:5963)
==> vmware-iso: Error detecting host IP: Could not find vmnetdhcp conf file: /etc/vmware/vmnet8/dhcp/dhcp.conf
==> vmware-iso: Stopping virtual machine...
==> vmware-iso: Deleting output directory...
Build 'vmware-iso' errored: Error detecting host IP: Could not find vmnetdhcp conf file: /etc/vmware/vmnet8/dhcp/dhcp.conf
看起来现在文件位于这里/etc/vmware/vmnet8/dhcpd/dhcpd.conf (vs /etc/vmware/vmnet8/dhcp/dhcp.conf ) ,所以我刚刚创建了一个指向目录和文件的符号链接:
<> ls -l /etc/vmware/vmnet8/dhcp
lrwxrwxrwx 1 root root 5 Feb 11 12:39 /etc/vmware/vmnet8/dhcp -> dhcpd
<> ls -l /etc/vmware/vmnet8/dhcp/dhcp.conf
lrwxrwxrwx 1 root root 10 Feb 11 12:39 /etc/vmware/vmnet8/dhcp/dhcp.conf -> dhcpd.conf
然后它开始安装,我看到虚拟机正在运行:
<> vmrun -T player list
Total running VMs: 1
/usr/local/packer/output-ova-vmware-iso/packer-centos-7-x86_64.vmx
<> ps -ef | grep vmx
elatov 3592 1372 0 20:22 pts/3 00:00:00 grep --color=auto vmx
elatov 30788 1 99 20:18 ? 00:04:33 /usr/lib/vmware/bin/vmware-vmx -s vmx.noUIBuildNumberCheck=TRUE -# product=4;name=VMware Player;version=14.0.0;buildnumber=6661328;licensename=VMware Player;licenseversion=14.0; -@ duplex=3;msgs=ui /usr/local/packer/output-ova-vmware-iso/packer-centos-7-x86_64.vmx
检查 PXE 引导安装进度
在Kickstart安装进行时,packer显示此消息,
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting HTTP server on port 8863
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC with the password "O08ybVbP" to
vmware-iso: vnc://127.0.0.1:5924
==> vmware-iso: Waiting 10s for boot...
==> vmware-iso: Connecting to VM via VNC (127.0.0.1:5924)
==> vmware-iso: Typing the boot command over VNC...
==> vmware-iso: Waiting for SSH to become available...
所以我决定连接到VNC服务。首先,我从我的 Mac 创建了一个 SSH 隧道:
<> ssh -L 1111:localhost:5924 ub
然后在我的 Mac 上,我运行了这个:
<> vncviewer localhost:1111
然后在输入密码后(来自打包程序的输出),我看到安装正在进行:
很高兴确认安装正在进行。
Ansible 配置器和 Packer 的问题
我遇到了ansible供应商的另一个问题:
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting HTTP server on port 8844
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC with the password "lWgi2eUn" to
vmware-iso: vnc://127.0.0.1:5970
==> vmware-iso: Waiting 10s for boot...
==> vmware-iso: Connecting to VM via VNC (127.0.0.1:5970)
==> vmware-iso: Typing the boot command over VNC...
==> vmware-iso: Waiting for SSH to become available...
==> vmware-iso: Connected to SSH!
==> vmware-iso: Provisioning with shell script: scripts/post-install.sh
..
..
==> vmware-iso: Provisioning with Ansible...
vmware-iso: Creating Ansible staging directory...
vmware-iso: Creating directory: /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb
vmware-iso: Uploading main Playbook file...
vmware-iso: Uploading galaxy file...
{
vmware-iso: Uploading inventory file...
vmware-iso: Executing Ansible Galaxy: cd /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb && ansible-galaxy install -r /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb/requirements.yml -p /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb/roles
vmware-iso: - downloading role 'chrony', owned by influxdata
vmware-iso: - downloading role from https://github.com/influxdata/ansible-chrony/archive/master.tar.gz
vmware-iso: - extracting influxdata.chrony to /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb/roles/influxdata.chrony
vmware-iso: - influxdata.chrony (master) was installed successfully
vmware-iso: Executing Ansible: cd /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb && ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 ansible-playbook /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb/main.yml --extra-vars \"packer_build_name=vmware-iso packer_builder_type=vmware-iso packer_http_addr=172.16.197.1:8844\" -c local -i /tmp/packer-provisioner-ansible-local/5a80a166-018b-345f-29cb-6764bc9ad5bb/packer-provisioner-ansible-local746234266
vmware-iso: ERROR! the playbook: packer_builder_type=vmware-iso could not be found
==> vmware-iso: Stopping virtual machine...
==> vmware-iso: Deleting output directory...
Build 'vmware-iso' errored: Error executing Ansible: Non-zero exit status: 1
该问题特定于我的打包程序版本,并在此处进行了讨论(这是一个相当新的问题,因此我将等待下一个版本,看看是否可以修复它)。
完成封隔器构建
在我测试时,我禁用了ansible并只使用了shell配置器,并且构建成功了:
<> packer build centos7.json
vmware-iso output will be in this color.
==> vmware-iso: Downloading or copying ISO
vmware-iso: Downloading or copying: file:///usr/local/packer/iso/CentOS-7-x86_64-Minimal-1708.iso
==> vmware-iso: Creating virtual machine disk
==> vmware-iso: Building and writing VMX file
==> vmware-iso: Starting HTTP server on port 8776
==> vmware-iso: Starting virtual machine...
vmware-iso: The VM will be run headless, without a GUI. If you want to
vmware-iso: view the screen of the VM, connect via VNC with the password "jxIgJ53t" to
vmware-iso: vnc://127.0.0.1:5976
==> vmware-iso: Waiting 10s for boot...
==> vmware-iso: Connecting to VM via VNC (127.0.0.1:5976)
==> vmware-iso: Typing the boot command over VNC...
==> vmware-iso: Waiting for SSH to become available...
==> vmware-iso: Connected to SSH!
==> vmware-iso: Provisioning with shell script: scripts/post-install.sh
vmware-iso: Loaded plugins: fastestmirror
vmware-iso: base | 3.6 kB 00:00
vmware-iso: extras | 3.4 kB 00:00
vmware-iso: updates | 3.4 kB 00:00
vmware-iso: (1/4): base/7/x86_64/group_gz | 156 kB 00:00
vmware-iso: (2/4): extras/7/x86_64/primary_db | 166 kB 00:00
vmware-iso: (3/4): updates/7/x86_64/primary_db | 6.0 MB 00:00
vmware-iso: (4/4): base/7/x86_64/primary_db | 5.7 MB 00:01
vmware-iso: Determining fastest mirrors
vmware-iso: * base: mirror.den1.denvercolo.net
vmware-iso: * extras: mirrors.umflint.edu
vmware-iso: * updates: mirrors.oit.uci.edu
vmware-iso: Resolving Dependencies
vmware-iso: --> Running transaction check
vmware-iso: ---> Package ansible.noarch 0:2.4.2.0-2.el7 will be installed
vmware-iso: --> Processing Dependency: sshpass for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python2-jmespath for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-six for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-setuptools for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-passlib for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-paramiko for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-jinja2 for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-httplib2 for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: python-cryptography for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Processing Dependency: PyYAML for package: ansible-2.4.2.0-2.el7.noarch
vmware-iso: --> Running transaction check
vmware-iso: ---> Package PyYAML.x86_64 0:3.10-11.el7 will be installed
vmware-iso: --> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-11.el7.x86_64
vmware-iso: ---> Package python-httplib2.noarch 0:0.9.2-1.el7 will be installed
vmware-iso: ---> Package python-jinja2.noarch 0:2.7.2-2.el7 will be installed
vmware-iso: --> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.7.2-2.el7.noarch
vmware-iso: --> Processing Dependency: python-markupsafe for package: python-jinja2-2.7.2-2.el7.noarch
vmware-iso: ---> Package python-paramiko.noarch 0:2.1.1-2.el7 will be installed
vmware-iso: ---> Package python-passlib.noarch 0:1.6.5-2.el7 will be installed
vmware-iso: ---> Package python-setuptools.noarch 0:0.9.8-7.el7 will be installed
vmware-iso: --> Processing Dependency: python-backports-ssl_match_hostname for package: python-setuptools-0.9.8-7.el7.noarch
vmware-iso: ---> Package python-six.noarch 0:1.9.0-2.el7 will be installed
vmware-iso: ---> Package python2-cryptography.x86_64 0:1.7.2-1.el7_4.1 will be installed
vmware-iso: --> Processing Dependency: python-pyasn1 >= 0.1.8 for package: python2-cryptography-1.7.2-1.el7_4.1.x86_64
vmware-iso: --> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-1.el7_4.1.x86_64
vmware-iso: --> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-1.el7_4.1.x86_64
vmware-iso: --> Processing Dependency: python-ipaddress for package: python2-cryptography-1.7.2-1.el7_4.1.x86_64
vmware-iso: --> Processing Dependency: python-enum34 for package: python2-cryptography-1.7.2-1.el7_4.1.x86_64
vmware-iso: ---> Package python2-jmespath.noarch 0:0.9.0-3.el7 will be installed
vmware-iso: ---> Package sshpass.x86_64 0:1.06-2.el7 will be installed
vmware-iso: --> Running transaction check
vmware-iso: ---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed
vmware-iso: ---> Package python-babel.noarch 0:0.9.6-8.el7 will be installed
vmware-iso: ---> Package python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7 will be installed
vmware-iso: --> Processing Dependency: python-backports for package: python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
vmware-iso: ---> Package python-cffi.x86_64 0:1.6.0-5.el7 will be installed
vmware-iso: --> Processing Dependency: python-pycparser for package: python-cffi-1.6.0-5.el7.x86_64
vmware-iso: ---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed
vmware-iso: ---> Package python-idna.noarch 0:2.4-1.el7 will be installed
vmware-iso: ---> Package python-ipaddress.noarch 0:1.0.16-2.el7 will be installed
vmware-iso: ---> Package python-markupsafe.x86_64 0:0.11-10.el7 will be installed
vmware-iso: ---> Package python2-pyasn1.noarch 0:0.1.9-7.el7 will be installed
vmware-iso: --> Running transaction check
vmware-iso: ---> Package python-backports.x86_64 0:1.0-8.el7 will be installed
vmware-iso: ---> Package python-pycparser.noarch 0:2.14-1.el7 will be installed
vmware-iso: --> Processing Dependency: python-ply for package: python-pycparser-2.14-1.el7.noarch
vmware-iso: --> Running transaction check
vmware-iso: ---> Package python-ply.noarch 0:3.4-11.el7 will be installed
vmware-iso: --> Finished Dependency Resolution
vmware-iso:
vmware-iso: Dependencies Resolved
vmware-iso:
vmware-iso: ================================================================================
vmware-iso: Package Arch Version Repository
vmware-iso: Size
vmware-iso: ================================================================================
vmware-iso: Installing:
vmware-iso: ansible noarch 2.4.2.0-2.el7 extras 7.6 M
vmware-iso: Installing for dependencies:
vmware-iso: PyYAML x86_64 3.10-11.el7 base 153 k
vmware-iso: libyaml x86_64 0.1.4-11.el7_0 base 55 k
vmware-iso: python-babel noarch 0.9.6-8.el7 base 1.4 M
vmware-iso: python-backports x86_64 1.0-8.el7 base 5.8 k
vmware-iso: python-backports-ssl_match_hostname noarch 3.4.0.2-4.el7 base 12 k
vmware-iso: python-cffi x86_64 1.6.0-5.el7 base 218 k
vmware-iso: python-enum34 noarch 1.0.4-1.el7 base 52 k
vmware-iso: python-httplib2 noarch 0.9.2-1.el7 extras 115 k
vmware-iso: python-idna noarch 2.4-1.el7 base 94 k
vmware-iso: python-ipaddress noarch 1.0.16-2.el7 base 34 k
vmware-iso: python-jinja2 noarch 2.7.2-2.el7 base 515 k
vmware-iso: python-markupsafe x86_64 0.11-10.el7 base 25 k
vmware-iso: python-paramiko noarch 2.1.1-2.el7 extras 267 k
vmware-iso: python-passlib noarch 1.6.5-2.el7 extras 488 k
vmware-iso: python-ply noarch 3.4-11.el7 base 123 k
vmware-iso: python-pycparser noarch 2.14-1.el7 base 104 k
vmware-iso: python-setuptools noarch 0.9.8-7.el7 base 397 k
vmware-iso: python-six noarch 1.9.0-2.el7 base 29 k
vmware-iso: python2-cryptography x86_64 1.7.2-1.el7_4.1 updates 502 k
vmware-iso: python2-jmespath noarch 0.9.0-3.el7 extras 39 k
vmware-iso: python2-pyasn1 noarch 0.1.9-7.el7 base 100 k
vmware-iso: sshpass x86_64 1.06-2.el7 extras 21 k
vmware-iso:
vmware-iso: Transaction Summary
vmware-iso: ================================================================================
vmware-iso: Install 1 Package (+22 Dependent packages)
vmware-iso:
vmware-iso: Total download size: 12 M
vmware-iso: Installed size: 60 M
vmware-iso: Downloading packages:
vmware-iso: (1/23): libyaml-0.1.4-11.el7_0.x86_64.rpm | 55 kB 00:00
vmware-iso: (2/23): PyYAML-3.10-11.el7.x86_64.rpm | 153 kB 00:00
vmware-iso: (3/23): python-backports-1.0-8.el7.x86_64.rpm | 5.8 kB 00:00
vmware-iso: (4/23): python-backports-ssl_match_hostname-3.4.0.2-4.el7. | 12 kB 00:00
vmware-iso: (5/23): python-cffi-1.6.0-5.el7.x86_64.rpm | 218 kB 00:00
vmware-iso: (6/23): ansible-2.4.2.0-2.el7.noarch.rpm | 7.6 MB 00:01
vmware-iso: (7/23): python-idna-2.4-1.el7.noarch.rpm | 94 kB 00:00
vmware-iso: (8/23): python-babel-0.9.6-8.el7.noarch.rpm | 1.4 MB 00:01
vmware-iso: (9/23): python-enum34-1.0.4-1.el7.noarch.rpm | 52 kB 00:00
vmware-iso: (10/23): python-jinja2-2.7.2-2.el7.noarch.rpm | 515 kB 00:00
vmware-iso: (11/23): python-markupsafe-0.11-10.el7.x86_64.rpm | 25 kB 00:00
vmware-iso: (12/23): python-httplib2-0.9.2-1.el7.noarch.rpm | 115 kB 00:00
vmware-iso: (13/23): python-ipaddress-1.0.16-2.el7.noarch.rpm | 34 kB 00:00
vmware-iso: (14/23): python-setuptools-0.9.8-7.el7.noarch.rpm | 397 kB 00:00
vmware-iso: (15/23): python-six-1.9.0-2.el7.noarch.rpm | 29 kB 00:00
vmware-iso: (16/23): python-paramiko-2.1.1-2.el7.noarch.rpm | 267 kB 00:00
vmware-iso: (17/23): python-ply-3.4-11.el7.noarch.rpm | 123 kB 00:00
vmware-iso: (18/23): python-passlib-1.6.5-2.el7.noarch.rpm | 488 kB 00:00
vmware-iso: (19/23): python2-jmespath-0.9.0-3.el7.noarch.rpm | 39 kB 00:00
vmware-iso: (20/23): python-pycparser-2.14-1.el7.noarch.rpm | 104 kB 00:00
vmware-iso: (21/23): python2-cryptography-1.7.2-1.el7_4.1.x86_64.rpm | 502 kB 00:00
vmware-iso: (22/23): sshpass-1.06-2.el7.x86_64.rpm | 21 kB 00:00
vmware-iso: (23/23): python2-pyasn1-0.1.9-7.el7.noarch.rpm | 100 kB 00:00
vmware-iso: --------------------------------------------------------------------------------
vmware-iso: Total 6.0 MB/s | 12 MB 00:02
vmware-iso: Running transaction check
vmware-iso: Running transaction test
vmware-iso: Transaction test succeeded
vmware-iso: Running transaction
vmware-iso: Installing : python-six-1.9.0-2.el7.noarch 1/23
vmware-iso: Installing : python2-pyasn1-0.1.9-7.el7.noarch 2/23
vmware-iso: Installing : python-httplib2-0.9.2-1.el7.noarch 3/23
vmware-iso: Installing : python-enum34-1.0.4-1.el7.noarch 4/23
vmware-iso: Installing : python-ipaddress-1.0.16-2.el7.noarch 5/23
vmware-iso: Installing : libyaml-0.1.4-11.el7_0.x86_64 6/23
vmware-iso: Installing : PyYAML-3.10-11.el7.x86_64 7/23
vmware-iso: Installing : python-backports-1.0-8.el7.x86_64 8/23
vmware-iso: Installing : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch 9/23
vmware-iso: Installing : python-setuptools-0.9.8-7.el7.noarch 10/23
vmware-iso: Installing : python-babel-0.9.6-8.el7.noarch 11/23
vmware-iso: Installing : python-passlib-1.6.5-2.el7.noarch 12/23
vmware-iso: Installing : python-ply-3.4-11.el7.noarch 13/23
vmware-iso: Installing : python-pycparser-2.14-1.el7.noarch 14/23
vmware-iso: Installing : python-cffi-1.6.0-5.el7.x86_64 15/23
vmware-iso: Installing : python-markupsafe-0.11-10.el7.x86_64 16/23
vmware-iso: Installing : python-jinja2-2.7.2-2.el7.noarch 17/23
vmware-iso: Installing : python-idna-2.4-1.el7.noarch 18/23
vmware-iso: Installing : python2-cryptography-1.7.2-1.el7_4.1.x86_64 19/23
vmware-iso: Installing : python-paramiko-2.1.1-2.el7.noarch 20/23
vmware-iso: Installing : python2-jmespath-0.9.0-3.el7.noarch 21/23
vmware-iso: Installing : sshpass-1.06-2.el7.x86_64 22/23
vmware-iso: Installing : ansible-2.4.2.0-2.el7.noarch 23/23
vmware-iso: Verifying : python-jinja2-2.7.2-2.el7.noarch 1/23
vmware-iso: Verifying : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch 2/23
vmware-iso: Verifying : sshpass-1.06-2.el7.x86_64 3/23
vmware-iso: Verifying : python-setuptools-0.9.8-7.el7.noarch 4/23
vmware-iso: Verifying : python2-cryptography-1.7.2-1.el7_4.1.x86_64 5/23
vmware-iso: Verifying : python2-jmespath-0.9.0-3.el7.noarch 6/23
vmware-iso: Verifying : python-six-1.9.0-2.el7.noarch 7/23
vmware-iso: Verifying : python-idna-2.4-1.el7.noarch 8/23
vmware-iso: Verifying : python-markupsafe-0.11-10.el7.x86_64 9/23
vmware-iso: Verifying : python-ply-3.4-11.el7.noarch 10/23
vmware-iso: Verifying : python-passlib-1.6.5-2.el7.noarch 11/23
vmware-iso: Verifying : python-babel-0.9.6-8.el7.noarch 12/23
vmware-iso: Verifying : python-backports-1.0-8.el7.x86_64 13/23
vmware-iso: Verifying : python-cffi-1.6.0-5.el7.x86_64 14/23
vmware-iso: Verifying : python-paramiko-2.1.1-2.el7.noarch 15/23
vmware-iso: Verifying : python-pycparser-2.14-1.el7.noarch 16/23
vmware-iso: Verifying : libyaml-0.1.4-11.el7_0.x86_64 17/23
vmware-iso: Verifying : ansible-2.4.2.0-2.el7.noarch 18/23
vmware-iso: Verifying : python-ipaddress-1.0.16-2.el7.noarch 19/23
vmware-iso: Verifying : python-enum34-1.0.4-1.el7.noarch 20/23
vmware-iso: Verifying : python-httplib2-0.9.2-1.el7.noarch 21/23
vmware-iso: Verifying : python2-pyasn1-0.1.9-7.el7.noarch 22/23
vmware-iso: Verifying : PyYAML-3.10-11.el7.x86_64 23/23
vmware-iso:
vmware-iso: Installed:
vmware-iso: ansible.noarch 0:2.4.2.0-2.el7
vmware-iso:
vmware-iso: Dependency Installed:
vmware-iso: PyYAML.x86_64 0:3.10-11.el7
vmware-iso: libyaml.x86_64 0:0.1.4-11.el7_0
vmware-iso: python-babel.noarch 0:0.9.6-8.el7
vmware-iso: python-backports.x86_64 0:1.0-8.el7
vmware-iso: python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7
vmware-iso: python-cffi.x86_64 0:1.6.0-5.el7
vmware-iso: python-enum34.noarch 0:1.0.4-1.el7
vmware-iso: python-httplib2.noarch 0:0.9.2-1.el7
vmware-iso: python-idna.noarch 0:2.4-1.el7
vmware-iso: python-ipaddress.noarch 0:1.0.16-2.el7
vmware-iso: python-jinja2.noarch 0:2.7.2-2.el7
vmware-iso: python-markupsafe.x86_64 0:0.11-10.el7
vmware-iso: python-paramiko.noarch 0:2.1.1-2.el7
vmware-iso: python-passlib.noarch 0:1.6.5-2.el7
vmware-iso: python-ply.noarch 0:3.4-11.el7
vmware-iso: python-pycparser.noarch 0:2.14-1.el7
vmware-iso: python-setuptools.noarch 0:0.9.8-7.el7
vmware-iso: python-six.noarch 0:1.9.0-2.el7
vmware-iso: python2-cryptography.x86_64 0:1.7.2-1.el7_4.1
vmware-iso: python2-jmespath.noarch 0:0.9.0-3.el7
vmware-iso: python2-pyasn1.noarch 0:0.1.9-7.el7
vmware-iso: sshpass.x86_64 0:1.06-2.el7
vmware-iso:
vmware-iso: Complete!
==> vmware-iso: Gracefully halting virtual machine...
vmware-iso: Waiting for VMware to clean up after itself...
==> vmware-iso: Deleting unnecessary VMware files...
vmware-iso: Deleting: output-ova-vmware-iso/vmware.log
==> vmware-iso: Compacting the disk image
==> vmware-iso: Cleaning VMX prior to finishing up...
vmware-iso: Unmounting floppy from VMX...
vmware-iso: Detaching ISO from CD-ROM device...
vmware-iso: Disabling VNC server...
==> vmware-iso: Skipping export of virtual machine (export is allowed only for ESXi and the format needs to be specified)...
==> vmware-iso: Running post-processor: shell-local
==> vmware-iso (shell-local): Post processing with local shell script: /tmp/packer-shell112690227
vmware-iso (shell-local): Opening VMX source: output-ova-vmware-iso/packer-centos-7-x86_64.vmx
vmware-iso (shell-local): Opening OVA target: output-ova-vmware-iso/test.ova
vmware-iso (shell-local): Writing OVA package: output-ova-vmware-iso/test.ova
vmware-iso (shell-local): Transfer Completed
vmware-iso (shell-local): Completed successfully
Build 'vmware-iso' finished.
==> Builds finished. The artifacts of successful builds are:
--> vmware-iso: VM files in directory: output-ova-vmware-iso
--> vmware-iso:
我创建了我的 OVA:
<> tree output-ova-vmware-iso
output-ova-vmware-iso
├── disk.vmdk
├── packer-centos-7-x86_64.nvram
├── packer-centos-7-x86_64.vmsd
├── packer-centos-7-x86_64.vmx
├── packer-centos-7-x86_64.vmxf
└── test.ova
很酷。我还能够查询 OVA 以查看其属性:
<> ovftool output-ova-vmware-iso/test.ova
OVF version: 1.0
VirtualApp: false
Name: packer-centos-7-x86_64
Download Size: 782.63 MB
Deployment Sizes:
Flat disks: 16.00 GB
Sparse disks: 1.55 GB
Networks:
Name: nat
Description: The nat network
Virtual Machines:
Name: packer-centos-7-x86_64
Operating System: centos7_64guest
Virtual Hardware:
Families: vmx-13
Number of CPUs: 2
Cores per socket: 1
Memory: 512.00 MB
Disks:
Index: 0
Instance ID: 7
Capacity: 16.00 GB
Disk Types: SCSI-lsilogic
NICs:
Adapter Type: E1000
Connection: nat
看起来不错。
在 ESXi 主机上部署 OVA
作为快速测试,我在 ESXi 主机上部署了 OVA:
<> ovftool -dm=thin -ds=datastore1 "--net:nat=VM_VLAN3" output-ova-vmware-iso/test.ova "vi://root@hp.kar.int"
Opening OVA source: output-ova-vmware-iso/test.ova
The manifest validates
Enter login information for target vi://hp.kar.int/
Username: root
Password: ********
Opening VI target: vi://root@hp.kar.int:443/
Deploying to VI: vi://root@hp.kar.int:443/
Transfer Completed
Completed successfully
我能够打开 VM 并使用 root 用户登录。以下是虚拟机在 Web 客户端中的样子:
封隔器选项
我最终在我的打包程序配置中设置了一些选项(VMware Builder(来自 ISO)中涵盖了所有选项):
- 我禁用了tools_upload_flavor选项,因为我稍后在配置过程中安装了open-vm-tools包。
- 我将版本设置为13以匹配我的 ESXi 版本(即6.5),默认情况下它是9(即 ESXi 5.1)。
-
我使用ovftool手动创建了 OVA,而不是将其上传到 ESXi 机器,仅用于测试(并且能够将其用于以后使用,因为我没有 vCenter 并且无法存储模板):
"post-processors": [ { "type": "shell-local", "inline": ["ovftool output-ova-vmware-iso/packer-centos-7-x86_64.vmx output-ova-vmware-iso/test.ova"] } ]
- 我设置了guest_os_type是centos7-64,以确保它显示为CentOS的7,而不是CentOS 5的(OS类型的完整列表,请点击这里
这只是对我有用的一些选择。
包装工与詹金斯
不乏Jenkinsfile示例:
创建您选择的 Jenkins 作业并运行成功的作业(构建和存储 OVA 映像)后,您可能会在 Jenkins 作业结果中看到类似这样的内容(不要忘记使用阶段块):