Skip to content

Latest commit

 

History

History
436 lines (340 loc) · 21.2 KB

README.md

File metadata and controls

436 lines (340 loc) · 21.2 KB

vmware-powercli

VMware's PowerCLI with PowerShell Core and Python for ImageBuilder Support in Linux. For those who need to mount, edit and re-package ISO images from ImageBuilder, this container also has the appropriate system tools to do so. Published for 64-bit x86 and ARM architectures.

GitHub Workflow Status Docker Pulls Docker Stars Github Issues

About

This container is based on Ubuntu 20.04, contains both xorriso and mkisofs packages (for repacking ISO images) and has the following software installed, per the Compatibility Matrixes for VMware PowerCLI 13.1.0 and Compatibility Matrixes for VMware PowerCLI 13.0.0:

  • .NET Core 3.1 (which is now End of Support)
  • PowerShell Core 7.2 LTS (Automated)
  • Python 3.7 (via "deadsnakes" team)
  • VMware PowerCLI 13.1.0 (for x64) or 13.0.0 (for ARM64)

NOTE:

  • Python is configured per requirements outlined in Install and Configure Python on Linux
  • For ARM64 (aka Apple Silicone) users, there is a bug in PowerCLI 13.1.0 with ImageBuilder and it will not run so, ARM64 images contain PowerCLI 13.0.0. VMware states its due to one of their modules not being compiled for ARM and have provided no ETA on when they'll fix it. Until then, I am keeping PowerCLI 13.0.0 for ARM64 images.

How to Use

Requirements

  • Container's non-root user is coder
  • Container defaults to using user coder when ran
  • If leveraging Image Builder and/or mkisofs, it is assumed and recommended that a volume will be mapped to /home/coder/files for sharing files between Host and Container

Running Container

For most use cases where the intent is to only use PowerCLI (without Image Builder):

docker run -it jmcombs/vmware-powercli

If the intent is to use PowerCLI with Image Builder and use xorriso to repackage modified Images, a volume will need to be mapped:

docker run -it --volume=/your/local/filesystem/files:/home/coder/files jmcombs/vmware-powercli

If the intent is to use PowerCLI with Image Builder and use mkisofs to repackage modified Images, a volume will need to be mapped mkisofs requires the container to be ran in Privileged Mode

docker run -it --privileged --volume=/your/local/filesystem/files:/home/coder/files jmcombs/vmware-powercli

Examples

Create ESXi Image with Image Builder

The following are instructions for

  • Adding VIBs to Image Builder
  • Cloning an ESXi Image Profile (Offline Bundle)
  • Adding VIBs to Cloned Image
  • Exporting to ISO

NOTE: The example below:

Assumptions:

  • It is assumed the user has access to download software from VMware

Instructions

  1. Add VIBs
PS /home/coder/files> Get-EsxSoftwarePackage -PackageUrl /home/coder/files/Synology_bootbank_synology-nfs-vaai-plugin_2.0-1109.vib

Name                     Version                        Vendor     Creation Date
----                     -------                        ------     -------------
synology-nfs-vaai-plugin 2.0-1109                       Synology   10/25/2021 2:34…

PS /home/coder/files> Get-EsxSoftwarePackage -PackageUrl /home/coder/files/VMW_bootbank_net-community_1.2.7.0-1vmw.700.1.0.15843807.vib

Name                     Version                        Vendor     Creation Date
----                     -------                        ------     -------------
net-community            1.2.7.0-1vmw.700.1.0.15843807  VMW        3/10/2022 9:21:…
  1. Confirm VIBs were added
PS /home/coder/files> Get-EsxSoftwarePackage

Name                     Version                        Vendor     Creation Date
----                     -------                        ------     -------------
net-community            1.2.7.0-1vmw.700.1.0.15843807  VMW        3/10/2022 9:21:…
synology-nfs-vaai-plugin 2.0-1109                       Synology   10/25/2021 2:34
  1. Add ESXi Offline Bundle
PS /home/coder/files> Add-EsxSoftwareDepot -DepotUrl /home/coder/files/VMware-ESXi-7.0U3g-20328353-depot.zip

Depot Url
---------
zip:/home/coder/files/VMware-ESXi-7.0U3g-20328353-depot.zip?index.xml
  1. Confirm Offline Bundle was added
PS /home/coder/files> Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U3g-20328353-no-tools  VMware, Inc.    8/23/2022 3:00… PartnerSupported
ESXi-7.0U3g-20328353-standard  VMware, Inc.    9/1/2022 12:00… PartnerSupported
  1. (Optional) List all Software Packages to confirm all packages from Offline Bundle and previously added VIBs are listed
PS /home/coder/files> Get-EsxSoftwarePackage

Name                     Version                        Vendor     Creation Date
----                     -------                        ------     -------------
net-community            1.2.7.0-1vmw.700.1.0.15843807  VMW        3/10/2022 9:21:…
synology-nfs-vaai-plugin 2.0-1109                       Synology   10/25/2021 2:34< Text omitted for brevity. Should match output in Step 10 >
  1. Clone ESXi Image Profile (from Step 4)
PS /home/coder/files> New-EsxImageProfile -Vendor "VMware, Inc." -CloneProfile ESXi-7.0U3g-20328353-standard -Name ESXi-7.0U3g-nuc12-syn -AcceptanceLevel PartnerSupported

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U3g-nuc12-syn          VMware, Inc.    9/1/2022 12:00… PartnerSupported
  1. Add VIBs to new ESXi Image Profile
PS /home/coder/files> Add-EsxSoftwarePackage -ImageProfile ESXi-7.0U3g-nuc12-syn -SoftwarePackage synology-nfs-vaai-plugin -Confirm

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U3g-nuc12-syn          VMware, Inc.    12/13/2022 9:2… PartnerSupported

PS /home/coder/files> Add-EsxSoftwarePackage -ImageProfile ESXi-7.0U3g-nuc12-syn -SoftwarePackage net-community -Confirm

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-7.0U3g-nuc12-syn          VMware, Inc.    12/13/2022 9:2… PartnerSupported
  1. Confirm all VIBs are in Cloned ESXi Image Profile
PS /home/coder/files> (Get-EsxImageProfile -Name ESXi-7.0U3g-nuc12-syn).VibList

Name                     Version                        Vendor     Creation Date
----                     -------                        ------     -------------
net-community            1.2.7.0-1vmw.700.1.0.15843807  VMW        3/10/2022 9:21:…
mtip32xx-native          3.9.8-1vmw.703.0.20.19193900   VMW        1/11/2022 11:21…
iser                     1.1.0.1-1vmw.703.0.50.20036589 VMW        6/30/2022 2:35:…
cpu-microcode            7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
esx-base                 7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
elx-esx-libelxima.so     12.0.1200.0-4vmw.703.0.20.191… VMware     1/11/2022 11:22…
nmlx4-en                 3.19.16.8-2vmw.703.0.20.19193… VMW        1/11/2022 11:21…
qfle3i                   1.0.15.0-15vmw.703.0.20.19193… VMW        1/11/2022 11:21…
lsi-mr3                  7.718.02.00-1vmw.703.0.20.191… VMW        1/11/2022 11:21…
pvscsi                   0.1-4vmw.703.0.20.19193900     VMW        1/11/2022 11:21…
qflge                    1.1.0.11-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
lsuv2-oem-lenovo-plugin  1.0.0-1vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
esx-update               7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
nmlx5-core               4.19.16.11-1vmw.703.0.20.1919… VMW        1/11/2022 11:21…
vdfs                     7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
vsanhealth               7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
nhpsa                    70.0051.0.100-4vmw.703.0.20.1… VMW        1/11/2022 11:21…
crx                      7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
lsi-msgpt35              19.00.02.00-1vmw.703.0.20.191… VMW        1/11/2022 11:21…
esxio-combiner           7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
vmware-esx-esxcli-nvme-1.2.0.44-1vmw.703.0.20.191939… VMware     1/11/2022 11:22…
bnxtnet                  216.0.50.0-44vmw.703.0.50.200… VMW        6/30/2022 2:35:…
esx-dvfilter-generic-fa… 7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
esx-xserver              7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
nmlx4-rdma               3.19.16.8-2vmw.703.0.20.19193… VMW        1/11/2022 11:21…
synology-nfs-vaai-plugin 2.0-1109                       Synology   10/25/2021 2:34…
nvmxnet3                 2.0.0.30-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
irdman                   1.3.1.22-1vmw.703.0.50.200365… VMW        6/30/2022 2:35:…
lsuv2-intelv2-nvme-vmd-2.7.2173-1vmw.703.0.20.191939… VMware     1/11/2022 11:22…
nmlx4-core               3.19.16.8-2vmw.703.0.20.19193… VMW        1/11/2022 11:21…
iavmd                    2.7.0.1157-2vmw.703.0.20.1919… VMW        1/11/2022 11:21…
rste                     2.0.2.0088-7vmw.703.0.20.1919… VMW        1/11/2022 11:21…
lsuv2-nvme-pcie-plugin   1.0.0-1vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
elxnet                   12.0.1250.0-5vmw.703.0.20.191… VMW        1/11/2022 11:21…
trx                      7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
nvmerdma                 1.0.3.5-1vmw.703.0.20.19193900 VMW        1/11/2022 11:21…
nvmetcp                  1.0.0.1-1vmw.703.0.35.19482537 VMW        3/11/2022 2:12:…
vsan                     7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
bmcal                    7.0.3-0.55.20328353            VMware     8/23/2022 2:03:…
lsuv2-lsiv2-drivers-plu… 1.0.0-12vmw.703.0.50.20036589  VMware     6/30/2022 2:36:…
gc                       7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
qcnic                    1.0.15.0-14vmw.703.0.20.19193… VMW        1/11/2022 11:21…
elxiscsi                 12.0.1200.0-9vmw.703.0.20.191… VMW        1/11/2022 11:21…
igbn                     1.4.11.2-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
sfvmk                    2.4.0.2010-6vmw.703.0.20.1919… VMW        1/11/2022 11:21…
bnxtroce                 216.0.58.0-23vmw.703.0.50.200… VMW        6/30/2022 2:35:…
nvme-pcie                1.2.3.16-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
vmkfcoe                  1.0.0.2-1vmw.703.0.20.19193900 VMW        1/11/2022 11:21…
ixgben                   1.7.1.35-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
ionic-en                 16.0.0-16vmw.703.0.20.19193900 VMW        1/11/2022 11:21…
lpfc                     14.0.169.26-5vmw.703.0.50.200… VMW        6/30/2022 2:35:…
icen                     1.4.1.20-1vmw.703.0.50.200365… VMW        6/30/2022 2:35:…
lsi-msgpt3               17.00.12.00-1vmw.703.0.20.191… VMW        1/11/2022 11:21…
atlantic                 1.0.3.0-8vmw.703.0.20.19193900 VMW        1/11/2022 11:21…
lsuv2-smartpqiv2-plugin  1.0.0-8vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
nvmxnet3-ens             2.0.0.22-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
qfle3f                   1.0.51.0-22vmw.703.0.20.19193… VMW        1/11/2022 11:21…
ntg3                     4.1.7.0-0vmw.703.0.20.19193900 VMW        1/11/2022 11:21…
ne1000                   0.9.0-1vmw.703.0.50.20036589   VMW        6/30/2022 2:35:…
vmw-ahci                 2.0.11-1vmw.703.0.20.19193900  VMW        1/11/2022 11:21…
brcmfcoe                 12.0.1500.2-3vmw.703.0.20.191… VMW        1/11/2022 11:21…
qlnativefc               4.1.14.0-26vmw.703.0.20.19193… VMware     1/11/2022 11:21…
loadesx                  7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
qedentv                  3.40.5.53-22vmw.703.0.20.1919… VMW        1/11/2022 11:21…
qfle3                    1.0.67.0-22vmw.703.0.20.19193… VMW        1/11/2022 11:21…
lsuv2-oem-dell-plugin    1.0.0-1vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
smartpqi                 70.4149.0.5000-1vmw.703.0.20.… VMW        1/11/2022 11:21…
native-misc-drivers      7.0.3-0.55.20328353            VMware     8/23/2022 2:02:…
vmkusb                   0.1-7vmw.703.0.50.20036589     VMW        6/30/2022 2:35:…
lpnic                    11.4.62.0-1vmw.703.0.20.19193… VMW        1/11/2022 11:21…
vmkata                   0.1-1vmw.703.0.20.19193900     VMW        1/11/2022 11:21…
qedrntv                  3.40.5.53-18vmw.703.0.20.1919… VMW        1/11/2022 11:21…
nfnic                    4.0.0.70-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
i40en                    1.11.1.31-1vmw.703.0.20.19193… VMW        1/11/2022 11:21…
lsi-msgpt2               20.00.06.00-4vmw.703.0.20.191… VMW        1/11/2022 11:21…
tools-light              12.0.0.19345655-20036586       VMware     6/30/2022 1:04:…
esx-ui                   1.43.8-19798623                VMware     5/13/2022 11:32…
nenic                    1.0.33.0-1vmw.703.0.20.191939… VMW        1/11/2022 11:21…
lsuv2-hpv2-hpsa-plugin   1.0.0-3vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
lsuv2-oem-hp-plugin      1.0.0-1vmw.703.0.20.19193900   VMware     1/11/2022 11:22…
nmlx5-rdma               4.19.16.11-1vmw.703.0.20.1919… VMW        1/11/2022 11:21
  1. Export Cloned ESXi Image Profile to ISO
PS /home/coder/files> Export-EsxImageProfile -ImageProfile ESXi-7.0U3g-nuc12-syn -ExportToIso -FilePath /home/coder/files/VMware-VMvisor-Installer-7.0U3g-20328353.x86_64.nuc12-syn.iso -NoSignatureCheck
  1. Happy ESXi Installing!

Modify & Repackage ESXi ISO with xorriso

The following are instructions for

  • This is the recommended approach
  • Mounting an ESXi ISO image
  • Copying ESXi ISO image to a temporary location (for modification) & Repackaging using xorriso

NOTE: The example below:

Assumptions:

  • It is assumed the user knows how to modify an ESXi Image (adding Kickstart scripts, modifying boot.cfg, creating Boot Menus, etc.) and, as such, are not demonstrated below

Instructions

  1. Verify ISO Information
isoinfo -d -i ./VMware-VMvisor-Installer-7.0U3g-20328353.x86_64.nuc12-syn.iso
CD-ROM is in ISO 9660 format
System id:
Volume id: ESXI-7.0U3G-NUC12-SYN
Volume set id:
Publisher id:
Data preparer id:
Application id: ESXIMAGE
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 196201
El Torito VD version 1 found, boot catalog is in sector 1419
NO Joliet present
NO Rock Ridge present
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff 4699 18073
  1. Create temporary folder for ESXi Installer (for modifications to boot commands, adding kickstart scripts, adding boot loader menus, etc)
mkdir /home/coder/files/custom_esxi_cdrom/
  1. Extract ESXi installer files from mounted ISO to temporary folder and change permissions (to enable editing):
osirrox -indev ./VMware-VMvisor-Installer-7.0U3l-21424296.x86_64.nuc-syn.iso -extract / ./custom_esxi_cdrom/
chmod -R u+w /home/coder/files/custom_esxi_cdrom
  1. Make changes to ESXi Installer
  2. Create new ESXi Installer ISO
cd /home/coder/files/custom_esxi_cdrom
xorriso -as mkisofs -relaxed-filenames -joliet-long --norock -appid ESXIMAGE -volid ESXI70U3G_NUC12-SYN -output /home/coder/files/custom_esxi.iso -eltorito-boot ISOLINUX.BIN -eltorito-catalog BOOT.CAT -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -eltorito-platform 0xEF -e EFIBOOT.IMG -no-emul-boot /home/coder/files/custom_esxi_cdrom

NOTE: --norock is for ESXi Images only

  1. Happy ESXi Installing!

Modify & Repackage ESXi ISO with mkisofs

The following are instructions for

  • Mounting an ESXi ISO image
  • Copying ESXi ISO image to a temporary location (for modification)
  • Repackaging using mkisofs

NOTE: The example below:

Assumptions:

  • It is assumed the user knows how to modify an ESXi Image (adding Kickstart scripts, modifying boot.cfg, creating Boot Menus, etc.) and, as such, are not demonstrated below

Instructions

  1. Verify ISO Information
isoinfo -d -i ./VMware-VMvisor-Installer-7.0U3g-20328353.x86_64.nuc12-syn.iso
CD-ROM is in ISO 9660 format
System id:
Volume id: ESXI-7.0U3G-NUC12-SYN
Volume set id:
Publisher id:
Data preparer id:
Application id: ESXIMAGE
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 196201
El Torito VD version 1 found, boot catalog is in sector 1419
NO Joliet present
NO Rock Ridge present
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff 4699 18073
  1. Create temporary folder for and mount ESXi Installer ISO Image
sudo mkdir /mnt/esxi_cdrom
sudo mount -o loop /home/coder/files/VMware-VMvisor-Installer-7.0U3g-20328353.x86_64.nuc12-syn.iso /mnt/esxi_cdrom
mount: /mnt/esxi_cdrom: WARNING: device write-protected, mounted read-only.
  1. Create temporary folder for ESXi Installer (for modifications to boot commands, adding kickstart scripts, adding boot loader menus, etc)
sudo mkdir /home/coder/files/custom_esxi_cdrom/
  1. Copy ESXi installer files from mounted ISO to temporary folder and change permissions (to enable editing)
cp -r /mnt/esxi_cdrom/* /home/coder/files/custom_esxi_cdrom/
chmod -R u+w /home/coder/files/custom_esxi_cdrom
  1. Unmount ESXi Installer ISO and remove temporary mountpoint
sudo umount /mnt/esxi_cdrom/
sudo rmdir /mnt/esxi_cdrom/
  1. Make changes to ESXi Installer
  2. Create new ESXi Installer ISO
cd /home/coder/files/custom_esxi_cdrom
mkisofs -relaxed-filenames -J -R -A ESXIMAGE -V ESXI70U3G_NUC12-SYN -o /home/coder/files/custom_esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -eltorito-platform -e efiboot.img -no-emul-boot /home/coder/files/custom_esxi_cdrom
  1. Happy ESXi Installing!