Skip to content

Instantly share code, notes, and snippets.

@enzofrnt
Created March 31, 2026 10:25
Show Gist options
  • Select an option

  • Save enzofrnt/84d086cdcab219c9a1b0c629177fb7e4 to your computer and use it in GitHub Desktop.

Select an option

Save enzofrnt/84d086cdcab219c9a1b0c629177fb7e4 to your computer and use it in GitHub Desktop.
Install VCSA (Vcenter) on Proxmox

Main installation logs available at:

/var/log/firstboot/cloudvm.log

Extract disks from the ISO:

mount -o loop VCSA.iso /mnt/vcsa

tar tvf /mnt/vcsa/vcsa/*.ova

Extract disk1 (OS) and disk2 (RPMs) from the OVA.

Import disks into Proxmox:

qm importdisk <VM-ID> VMware-vCenter-Server-Appliance-6.7.0.45000-16708996_OVF10-disk1.vmdk local-lvm
qm importdisk <VM-ID> VMware-vCenter-Server-Appliance-6.7.0.45000-16708996_OVF10-disk2.vmdk local-lvm

Then attach the disks:

qm set <VM-ID> --scsi0 local-lvm:vm-<VM-ID>-disk-0
qm set <VM-ID> --scsi1 local-lvm:vm-<VM-ID>-disk-1

Disks used:

  • disk1: OS
  • disk2: install media

Validated Proxmox VM configuration:

  • CPU: host
  • RAM: 12 GB
  • SCSI: virtio-scsi-single
  • Network: virtio

Disk mapping:

  • scsi0 → OS
  • scsi1 → install (RPMs)

Additional required disks (example):

qm set <VM-ID> --scsi2  local-lvm:26
qm set <VM-ID> --scsi3  local-lvm:26
qm set <VM-ID> --scsi4  local-lvm:11
qm set <VM-ID> --scsi5  local-lvm:11
qm set <VM-ID> --scsi6  local-lvm:16
qm set <VM-ID> --scsi7  local-lvm:11
qm set <VM-ID> --scsi8  local-lvm:1
qm set <VM-ID> --scsi9  local-lvm:11
qm set <VM-ID> --scsi10 local-lvm:11
qm set <VM-ID> --scsi11 local-lvm:103
qm set <VM-ID> --scsi12 local-lvm:52
qm set <VM-ID> --scsi13 local-lvm:11
qm set <VM-ID> --scsi14 local-lvm:6
qm set <VM-ID> --scsi15 local-lvm:103
qm set <VM-ID> --scsi16 local-lvm:154

Based on examples from:

Inject configuration file before first boot:

guestfish -a /dev/pve/vm-<VM-ID>-disk-0 <<'EOF'
run
mount /dev/sda3 /
rm-f /var/install/settings.json
copy-in /tmp/settings.json /var/install
EOF

Configuration example:

{
  "__version": "2.13.0",
  "new_vcsa": {
    "appliance": {
      "thin_disk_mode": true,
      "deployment_option": "small",
      "name": "vcsa"
    },
    "network": {
      "ip_family": "ipv4",
      "mode": "static",
      "ip": "192.168.X.X",
      "dns_servers": ["X.X.X.X"],
      "prefix": "24",
      "gateway": "X.X.X.X",
      "system_name": "vcsa.domain.local"
    },
    "os": {
      "password": "StrongPassword!",
      "ntp_servers": "X.X.X.X",
      "ssh_enable": true
    },
    "sso": {
      "password": "StrongPassword!",
      "domain_name": "vsphere.local"
    }
  },
  "ceip": {
    "settings": {
      "ceip_enabled": false
    }
  }
}

Read logs to verify installation completion:

guestfish -a /dev/pve/vm-<VM-ID>-disk-0 <<'EOF'
run
mount /dev/sda3 /
cat /var/log/firstboot/cloudvm.log
EOF

In our case, it ends with the following error:

Setting up subsequent boot script
Cannot set device ring parameters: Operation not supported
2026-03-30T09:39:26.199Z  Running command: ['/usr/lib/vmware-vpx/config_sendmail.sh']
2026-03-30T09:39:26.881Z  Done running command
2026-03-30T09:39:28.416Z: Pruning sensitive information.
2026-03-30T09:39:28.890Z: ERROR: Unable to prune sensitive information.

Strangely, vCenter appears to be working correctly for now.

Works if:

  • all disks are present at boot time
  • settings.json is injected before startup

Fails if:

  • missing disks
  • incorrect mapping
  • bus changed during setup
  • incorrect network configuration
@aleks-mariusz
Copy link
Copy Markdown

Nice work ! I haven't played very much with Proxmox so wasn't able to chime in/help much.. but i know this will be super helpful to more people than my post (since more people are using Proxmox rather than AlmaLinux). Great you were able to get this working!

@enzofrnt
Copy link
Copy Markdown
Author

enzofrnt commented Apr 2, 2026

Thanks you aleks.
After some automation try with ansible I notice that settings.json right need to be at least 644 inside the vm.

guestfish -a "{{ vcsa_os_disk_path }}" <<'EOF'
    run
    mount {{ vcsa_guestfish_root_partition }} /

    mkdir-p /var/install
    chmod 0755 /var/install
    chown 0 0 /var/install

    rm-f /var/install/settings.json
    copy-in "{{ vcsa_workdir_effective }}/settings.json" /var/install

    chmod 0644 /var/install/settings.json
    chown 0 0 /var/install/settings.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment