Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow Architecture configuration in the VMWARE-ISO Builder for arm64/aarch64 #10706

Closed
MarkProminic opened this issue Feb 27, 2021 · 2 comments
Closed

Comments

@MarkProminic
Copy link

MarkProminic commented Feb 27, 2021

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request.
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request.
If you are interested in working on this issue or have submitted a pull request, please leave a comment.

Description

When the ESXI-Arm fling came out I was giddy with excitement about where this could lead. In my process of trying to get OctoPi installed on my freshly install ESXI 7 Raspberry Pi v4. I found that it wasn't super easy to convert everything over. So In their source, they include instructions for Vagrant, but since the Vagrant image uses debian\buster64 (arm64) and is only build for Virtualbox. I thought, how hard can it be to get Packer to build for ESXI on Raspberry Pi if I can get it to work on ESXI x86.

Well, after some trial an error creating a Packer json build file for it, I found that there is one setting left that I can't change in the builder variables. That is the Architecture in the VMX file:

architecture = "arm64"

is the variable in the VMX that I need to adjust, and I have confirmed that after adjusting this variable, I was able to get the invalid VMX configuration to change to valid an the VM would boot up.

I've searched the Github repo and I can see that there was a Architecture flag added for AWS/AMI instances. Would it be possible to get this flag added to the VMWare-ISO Module?

Use Case(s)

The ability to build and protoype different OS's rapidly on ESXI-Arm.

Working Configuration

.encoding = "UTF-8"
RemoteDisplay.maxConnections = "-1"
architecture = "arm64"
bios.bootorder = "hdd,cdrom"
cleanshutdown = "TRUE"
config.version = "8"
displayname = "DebianBuster641"
ehci.pcislotnumber = "34"
ehci.present = "TRUE"
ethernet0.bsdname = "en0"
ethernet0.connectiontype = "nat"
ethernet0.displayname = "Ethernet"
ethernet0.linkstatepropagation.enable = "FALSE"
ethernet0.pcislotnumber = "33"
extendedconfigfile = "DebianBuster641.vmxf"
firmware = "efi"
floppy0.present = "FALSE"
guestos = "debian10-64"
gui.fullscreenatpoweron = "FALSE"
gui.viewmodeatpoweron = "windowed"
hgfs.linkrootshare = "TRUE"
hgfs.maprootshare = "TRUE"
isolation.tools.hgfs.disable = "FALSE"
memsize = "4096"
msg.autoanswer = "true"
numvcpus = "2"
nvme0.present = "FALSE"
nvram = "DebianBuster641.nvram"
parallel0.autodetect = "FALSE"
parallel0.filename = ""
parallel0.present = "FALSE"
parallel0.startconnected = "FALSE"
pcibridge0.pcislotnumber = "17"
pcibridge0.present = "TRUE"
pcibridge4.functions = "8"
pcibridge4.pcislotnumber = "21"
pcibridge4.present = "TRUE"
pcibridge4.virtualdev = "pcieRootPort"
pcibridge5.functions = "8"
pcibridge5.pcislotnumber = "22"
pcibridge5.present = "TRUE"
pcibridge5.virtualdev = "pcieRootPort"
pcibridge6.functions = "8"
pcibridge6.pcislotnumber = "23"
pcibridge6.present = "TRUE"
pcibridge6.virtualdev = "pcieRootPort"
pcibridge7.functions = "8"
pcibridge7.pcislotnumber = "24"
pcibridge7.present = "TRUE"
pcibridge7.virtualdev = "pcieRootPort"
powertype.poweron = "soft"
powertype.suspend = "soft"
proxyapps.publishtohost = "FALSE"
replay.supported = "FALSE"
sched.cpu.affinity = "all"
sched.cpu.latencySensitivity = "normal"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.cpu.units = "mhz"
sched.mem.min = "0"
sched.mem.minSize = "0"
sched.mem.shares = "normal"
sched.scsi0:0.shares = "normal"
sched.scsi0:0.throughputCap = "off"
scsi0.pcislotnumber = "16"
scsi0.present = "TRUE"
scsi0.virtualdev = "pvscsi"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.filename = "disk.vmdk"
scsi0:0.present = "TRUE"
serial0.autodetect = "FALSE"
serial0.filename = ""
serial0.filetype = ""
serial0.pipe.endpoint = ""
serial0.present = "FALSE"
serial0.startconnected = "FALSE"
serial0.trynorxloss = ""
serial0.yieldonmsrread = ""
sound.autodetect = "TRUE"
sound.filename = "-1"
sound.present = "FALSE"
sound.startconnected = "FALSE"
svga.autodetect = "TRUE"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforePowerOff = "TRUE"
toolScripts.beforeSuspend = "TRUE"
tools.guest.desktop.autolock = "FALSE"
tools.synctime = "FALSE"
tools.upgrade.policy = "manual"
usb.pcislotnumber = "32"
usb.present = "FALSE"
uuid.action = "create"
virtualhw.productcompatibility = "hosted"
virtualhw.version = "17"
vmci0.id = "1861462627"
vmci0.pcislotnumber = "35"
vmci0.present = "TRUE"
vmotion.checkpointfbsize = "65536000"

Currently Generated Packer Configuration:

.encoding = "UTF-8"
RemoteDisplay.maxConnections = "-1"
bios.bootorder = "hdd,cdrom"
cleanshutdown = "TRUE"
config.version = "8"
displayname = "DebianBuster641"
ehci.pcislotnumber = "34"
ehci.present = "TRUE"
ethernet0.bsdname = "en0"
ethernet0.connectiontype = "nat"
ethernet0.displayname = "Ethernet"
ethernet0.linkstatepropagation.enable = "FALSE"
ethernet0.pcislotnumber = "33"
extendedconfigfile = "DebianBuster641.vmxf"
firmware = "efi"
floppy0.present = "FALSE"
guestos = "debian10-64"
gui.fullscreenatpoweron = "FALSE"
gui.viewmodeatpoweron = "windowed"
hgfs.linkrootshare = "TRUE"
hgfs.maprootshare = "TRUE"
isolation.tools.hgfs.disable = "FALSE"
memsize = "4096"
msg.autoanswer = "true"
numvcpus = "2"
nvme0.present = "FALSE"
nvram = "DebianBuster641.nvram"
parallel0.autodetect = "FALSE"
parallel0.filename = ""
parallel0.present = "FALSE"
parallel0.startconnected = "FALSE"
pcibridge0.pcislotnumber = "17"
pcibridge0.present = "TRUE"
pcibridge4.functions = "8"
pcibridge4.pcislotnumber = "21"
pcibridge4.present = "TRUE"
pcibridge4.virtualdev = "pcieRootPort"
pcibridge5.functions = "8"
pcibridge5.pcislotnumber = "22"
pcibridge5.present = "TRUE"
pcibridge5.virtualdev = "pcieRootPort"
pcibridge6.functions = "8"
pcibridge6.pcislotnumber = "23"
pcibridge6.present = "TRUE"
pcibridge6.virtualdev = "pcieRootPort"
pcibridge7.functions = "8"
pcibridge7.pcislotnumber = "24"
pcibridge7.present = "TRUE"
pcibridge7.virtualdev = "pcieRootPort"
powertype.poweron = "soft"
powertype.suspend = "soft"
proxyapps.publishtohost = "FALSE"
replay.supported = "FALSE"
sched.cpu.affinity = "all"
sched.cpu.latencySensitivity = "normal"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.cpu.units = "mhz"
sched.mem.min = "0"
sched.mem.minSize = "0"
sched.mem.shares = "normal"
sched.scsi0:0.shares = "normal"
sched.scsi0:0.throughputCap = "off"
scsi0.pcislotnumber = "16"
scsi0.present = "TRUE"
scsi0.virtualdev = "pvscsi"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.filename = "disk.vmdk"
scsi0:0.present = "TRUE"
serial0.autodetect = "FALSE"
serial0.filename = ""
serial0.filetype = ""
serial0.pipe.endpoint = ""
serial0.present = "FALSE"
serial0.startconnected = "FALSE"
serial0.trynorxloss = ""
serial0.yieldonmsrread = ""
sound.autodetect = "TRUE"
sound.filename = "-1"
sound.present = "FALSE"
sound.startconnected = "FALSE"
svga.autodetect = "TRUE"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforePowerOff = "TRUE"
toolScripts.beforeSuspend = "TRUE"
tools.guest.desktop.autolock = "FALSE"
tools.synctime = "FALSE"
tools.upgrade.policy = "manual"
usb.pcislotnumber = "32"
usb.present = "FALSE"
uuid.action = "create"
virtualhw.productcompatibility = "hosted"
virtualhw.version = "17"
vmci0.id = "1861462627"
vmci0.pcislotnumber = "35"
vmci0.present = "TRUE"
vmotion.checkpointfbsize = "65536000"

Current JSON Build File

{
    "builders": [
      {
        "name": "DebianBuster641",
        "type": "vmware-iso",
        "vm_name": "DebianBuster641",
        "network": "lan",
        "guest_os_type": "debian11-64",
        "tools_upload_flavor": "linux",
        "headless": true,
        "vnc_over_websocket": true,
        "insecure_connection": true,
  
        "iso_urls": ["iso/ubuntu-18.04.5-server-amd64.iso",
        "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-18.04.5-server-amd64.iso"
        ],
        "iso_checksum": "8c5fc24894394035402f66f3824beb7234b757dd2b5531379cb310cedfdf0996",
  
        "cpus": 2,
        "memory": 4096,
        "disk_size": 20140,
        "disk_type_id": "thin",
  
        "boot_wait": "10s",
        "boot_command": [
          "<esc><wait>",
          "<esc><wait>",
          "<enter><wait>",
          "/install/vmlinuz",
          " initrd=/install/initrd.gz ",
          "auto=true ",
          "url=https://gist.githubusercontent.com/G0nz0uk/22afe85abc8a1b008602f79b381ea262/raw/ef166effdbdc12b6dc00e40fe5e194181a6b06d4/preseed1.cfg ",
          "fb=false ",
          "auto=true ",
          "language=en ",
          "locale=en_GB ",
          "priority=critical ",
          "keymap=uk ",
          "netcfg/get_hostname={{ .Name }} ",
          "netcfg/get_domain=vm ",
          "debconf/frontend=noninteractive ",
          "debian-installer/country=US ",
          "console-setup/ask_detect=false ",
          "console-keymaps-US/keymap=us ",
          "DEBCONF_DEBUG=5 ",
          "<enter>"
        ],
  
        "ssh_username": "vagrant",
        "ssh_password": "vagrant",
        "ssh_port": 22,
        "ssh_wait_timeout": "20m",
        "shutdown_command": "sudo systemctl poweroff",
  
        "vnc_disable_password": true,
        "format": "vmx",
        "remote_type": "esx5",
		"version": 17,
        "remote_host": "{{user `esxi_host`}}",
        "remote_datastore": "{{user `esxi_datastore`}}",
        "remote_username": "{{user `esxi_username`}}",
        "remote_password": "{{user `esxi_password`}}",
        "keep_registered": true,
        "skip_export": true
        ,
        "vmx_data": {
        "ethernet0.networkName": "lan"
        }
      }
    ],
    
  "provisioners": [
      {
        "type": "shell",
        "execute_command": "echo '{{user `ssh_password`}}' | {{ .Vars }} sudo -E -S sh '{{ .Path }}'",
        "inline": [
          "apt-get update",
          "apt-get install -y",
          "echo '%sudo    ALL=(ALL)  NOPASSWD:ALL' >> /etc/sudoers"
        ]  
      }         
   ]
}
 

References to get me this far

https://www.virtuallyghetto.com/2020/10/how-to-run-raspberry-pi-os-as-a-vm-on-esxi-arm.html
https://www.reddit.com/r/homelab/comments/lemdr4/trying_to_use_packer_with_single_esxi_host_for/
https://www.reddit.com/r/vmware/comments/lfbzw9/packer_almost_working_with_my_esxi_host_lab_just/

@github-actions
Copy link

This issue has been migrated to hashicorp/packer-plugin-vmware#45 due to the Packer Plugin split.

Please follow the new issue for updates.

@github-actions
Copy link

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.
If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 19, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants