Criando template no proxmox usando packer

Ola Pessoal,

Neste post, irei mostrar como criar um template do Windows Server 2022 no Proxmox usando Packer para fazer isso de forma automatizada.


Todos os arquivos utilizado neste tutorial, estão salvos no repositório: https://github.com/leandroscardua/windows-packer-proxmox , e todos os requerimentos para automatizar a instalação e criação do template, serão baixados durante o processo.



Softwares que serão utilizados e baixados automaticamente.

– Windows Server 2022 ISO – link
– Cloudinitbase – link
– QEUM agent – link
– Virtio Drivers – link
– Chocolatey – link

Software que precisam ser instalados no seu computador/laptop.

– Packer – link
– Mkisofs – link
– Git – link

1- Primeiramente, use o git para clonar o repositório com arquivos necessário.

git clone https://github.com/leandroscardua/windows-packer-proxmox.git

2- Entre na pasta referente ao windows server 22 com interface gráfica (gui), porem você pode usar a versão sem interface grafica se necessário (nogui)

cd windows/server22/gui

3- Nesta pasta, temos um arquivos chamado ws22.json, com as informações necessárias para conectar no proxmox.
Com isso,você precisa editar e colocar informações referentes ao seu proxmox host no arquivo.
“username”,“password”,“proxmox_url” e “node”

{
"variables": {
"username": "",
"password": ""
},
"builders": [
{
"type": "proxmox",
"proxmox_url": "https://xxx.xxx.xxx.xxx:8006/api2/json",
"insecure_skip_tls_verify": true,
"username": "{{user `username`}}",
"password": "{{user `password`}}",

"node": "",
"scsi_controller": "lsi",
"os": "win11",
"memory": 8192,
"cores": 2,
"sockets":1,
"network_adapters": [
{
"model": "e1000",
"bridge": "vmbr0"
}
],
"disks": [
{
"type": "sata",
"disk_size": "32G",
"storage_pool": "local-lvm",
"storage_pool_type": "lvm"
}
],

"additional_iso_files": [
{
"device": "sata5",
"iso_file": "local:iso/Autounattend.iso",
"unmount": true
}
],
"communicator": "none",

"iso_url": "https://software-download.microsoft.com/download/sg/20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso",
"iso_storage_pool": "local-lvm",
"iso_checksum": "none",
"unmount_iso": true,
"boot_wait": "15m",
"cloud_init": true,
"cloud_init_storage_pool": "local-lvm",
"boot_command": [""],
"template_name": "template-wscore22",
"template_description": "Windows Server 22 Core"
}
]
}


4- Ainda dentro desta pasta, temos que gerar uma iso com o arquivo Autounattend.xml, este arquivo sera utilizado para automatizar a instalação do windows e instalar os requerimentos na VM para sua operação no proxmox.

 cd file
mkisofs -J -l -R -V “Label CD” -iso-level 4 -o Autounattend.iso .

5- Depois de concluir o step anterior, você precisa fazer o upload do arquivo Autounattend.iso no proxmox.

-Login na interface web do proxmox ( ex : https://seuip:8006 )
-Click no menu datacenter menu, and selecione local
-Selecione ISO Images e click na opcao upload para salvar o arquivo Autounattend.iso, criado no passo anterior.

6- Temos que voltar a o caminho windows/server22/gui, para poder executar os comando no packer.

cd ..
packer build wscore22.json

7- Hora de preparar um cafe …, e acompanhar os logs na tela.
proxmox: output will be in this color.

==> proxmox: Retrieving ISO
==> proxmox: Trying https://software-download.microsoft.com/download/sg/20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso
==> proxmox: Trying https://software-download.microsoft.com/download/sg/20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso
==> proxmox: https://software-download.microsoft.com/download/sg/20348.169.210806-2348.fe_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso => /home/lscardua/.cache/packer/d211a308bdc20ed1fb4fbd36bbfab421727ec7e5.iso
==> proxmox: Creating VM
==> proxmox: No VM ID given, getting next free from Proxmox
==> proxmox: Starting VM
==> proxmox: Waiting 15m0s for boot
==> proxmox: Typing the boot command
==> proxmox: Stopping VM
==> proxmox: Converting VM to template
==> proxmox: Adding a cloud-init cdrom in storage pool local-lvm
Build ‘proxmox’ finished after 25 minutes 15 seconds.

8- Depois de alguns minutos, você pode acessar a interface do proxmox e verificar o template com nome: template-wscore22



Considerações:

– Se já existir uma ISO com mesmo nome no repositório, a criação do template ira falhar, bug no modulo do proxmox no packer.