You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
c.soylu f35958f656
Support for all Administrator usernames from metadata
2 years ago
localscripts Support for all Administrator usernames from metadata 2 years ago
powershell Readme & Scripts 2 years ago
qemu-server-6.4-2 Patch files for 6.4-2 2 years ago
qemu-server-7.1-4 Patch files for 7.1-4 2 years ago
MANUALPATCH.md Manual patching & Readme update. 2 years ago
README.md Typo readme 2 years ago

README.md

Geco-cloudbase-init

This is an implementation of Cloudbase-Init to Windows virtual machines running in a Proxmox Node in order to use cloud-init with those vms.

What can you do with this implementation? Use Cloudbase-Init with Windows VMs to:

  • Create a new user with username or enable administrator.
  • Set a password on the new user or administrator.
  • Set static ip or dhcp on network adapters.
  • Set machine hostname.
  • Insert public ssh keys to "user/.ssh/authorized_keys" file of created/enabled user.
  • Expand partition volumes automatically when there's a resized disk.

You can do all below on system startup with the data provided by the cloud-init section of the proxmox gui.

There is two files that we need to modify Qemu.pm and Cloudinit.pm.

  • Qemu.pm to get password as cleartext in meta_data drive when it is a Windows VM.
  • Cloudinit.pm to generate a metadata json file with variables that are compatible with Cloudbase-Init.

Proxmox Patch

We have provided patch file for two different versions, if you are on those versions you can simply download it and apply the patch by doing;

# Check the version of your qemu-server
apt show qemu-server |grep "Version"

# If your version is 6.4-2 or 7.1-4 download the corresponding patch from this repo and continue, if not continue manual patching below.

# Launch below as a test to see if you can apply the patch file, change path to where you downloaded the files and run this for two .patch files.
patch --force --forward --backup -p0 --directory / --input "/absolute/path/to/patchfile.pm.patch" --dry-run && echo "You can apply patch" || { echo "Can't apply patch!";}

# If the result is "Can't apply patch!", you can type "apt reinstall qemu-server" to reinstall the qemu-server files(If you have made changes to qemu-server source files they will be lost!)

# Apply the patch if the result is "You can apply patch"
patch --force --forward --backup -p0 --directory / --input "/absolute/path/to/patchfile.pm.patch"

If you want to revert the patch: patch --force --reverse --backup -p0 --directory / --input "/absolute/path/to/patchfile.pm.patch"

If you want to apply the patch manually you can follow these steps: Manual Patching

Cloudbase-Init LocalScripts

We have two scripts that do some fonctionality that Cloudbase-Init doesnt have;

  • Enabling administrator user when it's name is given to the Cloudbase-Init.
  • Enabling DHCP on the network adapters.

Move those scripts into Cloudbase Solutions\Cloudbase-Init\LocalScripts\ in your program files of your Windows VM.

Powershell Script

This powershell script has a few uses.

  • Deletes the "cloudbase-init" user, delegates "cloudbase-init" service to local Systeme user and modifies execution path of the script also to use local system user.
  • Installs OpenSSH-Server from optional features of Windows.
  • Removes a store language package that causes an error when generelazing for sysprep.

Run this script after installing Cloudbase-Init Continous Build. We need continous build because the stable build dates from 2020 and doesnt include functionalities we use.

When everything is installed simply run below in powershell to launch sysprep:

cd C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf
C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /unattend:Unattend.xml