Giter Site home page Giter Site logo

waaromzomoeilijk / proxmox-windows-template Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thundervm/proxmox-windows-template

0.0 0.0 0.0 251 KB

This is a repository to store all the things necessary to create windows 10 and windows server 12, 16, 19 and 22 templates on proxmox

License: Apache License 2.0

Python 0.29% Perl 99.65% PowerShell 0.06%

proxmox-windows-template's Introduction

Complete explanation

https://proxmox

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.

Install 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

Windows VM Configuration

  • Create a Windows VM in proxmox
  • Go to Hardware section of your VM, add Cloud-Init Drive and Serial Port 0

Then configure Windows to your needs and proceed to Cloudbase-Init installation.

Install Cloudbase-Init

Install Cloudbase-Init Continous Build from the official website.

Why Continous Build? Because the stable build dates from 2020 and doesn't include functionalities we use.

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.

Configure Cloudbase-Init

Deploy these two conf files to C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf.

Inside those files you will find the default Administrator name and the user group that will be used while user creation. You can launch our ModifyConf.ps1 script to modify that file to get the correct username and group of your Windows language.

Run 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 and configuring Cloudbase-Init Continous Build.

Run SysPrep

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

proxmox-windows-template's People

Contributors

thundervm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.