Retour | Blog

Installation de GOAD sur PROXMOX Partie 2 : Provisioning

Tutorial pour l'Installation de GOAD 2

Écrit par Sophie Crane 16 juin 2025 Tutoriels & Guide Technique
Tags - #goad
Installation de GOAD sur PROXMOX Partie 2 : Provisioning

Installation de GOAD sur PROXMOX Partie 2 sur 3 - Provisioning

Dans cette partie du tutoriel, nous allons créer le Provisioning CT qui gérera le déploiement du lab GOAD en utilisant Ansible.

Créer le Provisioning CT

Allez dans votre stockage local sur votre Proxmox

  • Allez dans Templates
  • Recherchez Ubuntu et sélectionnez la version la plus récente

Une fois que vous avez Ubuntu, vous définirez votre propre mot de passe ici avec le hostname : provisioning

  • Collez votre clé publique ssh que vous utiliserez pour vous connecter au provisioning CT (la même que celle donnée dans ~/.ssh/config).
  • Définissez le Template comme l'ubuntu que nous avons téléchargé
  • Définissez 4096 pour la mémoire
  • Bridge = vmbr2

Vous devriez obtenir ceci, et vous pourrez ensuite cliquer Finish

Télécharger GOAD

Sur votre provisioning ct, téléchargez GOAD depuis son github en exécutant :

apt install python3-venv
cd /root
git clone
cd GOAD ./goad.sh

Si tout s'est bien passé, vous devriez voir l'interface GOAD ici que vous pourrez quitter en tapant exit

Exécutez la configuration pour Proxmox :

cd /root/GOADbash -f ./scripts/setup_proxmox.sh

Cela peut fonctionner directement pour vous et vous pouvez ignorer ce qui suit, cependant j'ai rencontré plusieurs erreurs car le container avait Python 3.13 par défaut avec lequel Ansible a actuellement des problèmes de compatibilité.

curl <https://pyenv.run> | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo'[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
source ~/.bashrc
apt install libssl-dev
pyenv install 3.10.13

Assurez-vous que si le fichier .venv a déjà été créé, de le supprimer pour le recréer avec une version différente de python.

Obtenir vos Fichiers :

Télécharger l'ISO Windows

Local → ISO Images → download from URL

Téléchargez les deux images iso windows par url et interrogez l'url pour leurs données.

Donnez-leur les noms suivants (windows_server_2019_17763.737_eval_x64.iso et windows_server_2016_14393.0_eval_x64.iso) ou assurez-vous de modifier les variables iso_file dans /root/GOAD/packer/proxmox/windows_server2019_proxmox_cloudinit.pkvars.hcl et /root/GOAD/packer/proxmox/windows_server2016_proxmox_cloudinit.pkvars.hcl

Windows 2019

Windows 2016


Télécharger cloudbase sur goadprovisioning

Packer a besoin de ${path.root}/scripts/sysprep/cloudbase-init.ps1, et ${path.root}/scripts/sysprep/cloudbase-init-p2.ps1

cd /root/GOAD/packer/proxmox/scripts/sysprep/
wget https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi

Télécharger virtio-win.iso sur goadproxmox

ssh goadproxmox
cd /var/lib/vz/template/iso
wget <https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Utilisateur de Provisionnement

Créer l'utilisateur pour le provisionnement : infra_as_code@pve

sur le ssh proxmox :

pveum useradd infra_as_code@pve
pveum passwd infra_as_code@pve

pveum roleadd Packer -privs "VM.Config.Disk VM.Config.CPU VM.Config.Memory Datastore.AllocateTemplate Datastore.Audit Datastore.AllocateSpace Sys.Modify VM.Config.Options VM.Allocate VM.Audit VM.Console VM.Config.CDROM VM.Config.Cloudinit VM.Config.Network VM.PowerMgmt VM.Config.HWType VM.Monitor SDN.Use"

pveum acl modify / -user 'infra_as_code@pve' -role Packer
pveum acl modify / -user 'infra_as_code@pve' -role Administrator

Modifier les Variables

cd /root/GOAD/packer/proxmox/
cp config.auto.pkrvars.hcl.template config.auto.pkrvars.hcl
vim config.auto.pkrvars.hcl


config.auto.pkrvars.hcl:

proxmox_url = "<https://192.168.1.1:8006/api2/json>"
proxmox_username  = "infra_as_code@pve"
proxmox_password = "infra_as_code@pve password"
proxmox_skip_tls_verify= "true"
proxmox_node = "toad"
proxmox_pool = "Templates" proxmox_iso_storage = "local" proxmox_vm_storage = "local-lvm"

* Si vous n'avez pas de proxmox_pool:

  • Vérifiez les proxmox_pool disponibles avec zpool list

  • Créez un pool si aucun n'est disponible

  • Datacenter → Permission → Pools → Create

* Si vous n'avez pas de local-lvm pour proxmox_vm_storage: J'ai défini proxmox_iso_storage et proxmox_vm_storage tous les deux sur "local" pour éviter de créer un autre stockage


Exécuter build_proxmox_iso.sh :

cela crée ./iso/Autounattend_winserver2016_cloudinit.iso

cd /root/GOAD/packer/proxmox/
./build_proxmox_iso.sh

Copier scripts_withcloudinit.iso Si vous n'avez pas de local-lvm pour proxmox_vm_storage : J'ai défini proxmox_iso_storage et proxmox_vm_storage tous les deux sur "local" pour éviter de créer un autre stockage


Exécuter build_proxmox_iso.sh :

cela crée ./iso/Autounattend_winserver2016_cloudinit.iso

cd /root/GOAD/packer/proxmox/
./build_proxmox_iso.sh

Copier scripts_withcloudinit.iso de goadprovisioning vers goadproxmox

scp ./iso/scripts_withcloudinit.iso root@192.168.1.1:/var/lib/vz/template/iso/

Installer packer + terraform

curl -fsSL  | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list > /dev/null
apt update && apt install packer && apt install terraform

Construire avec packer

Les valeurs dans windows_server2019_proxmox_cloudinit.pkvars.hcl et windows_server2016_proxmox_cloudinit.pkvars.hcl devraient être correctes puisque nous avons nommé correctement les fichiers iso windows :

cd /root/GOAD/packer/proxmox

packer init .

packer validate -var-file=windows_server2019_proxmox_cloudinit.pkvars.hcl 

packer build -var-file=windows_server2019_proxmox_cloudinit.pkvars.hcl .


Faire la même chose pour le serveur 2016

packer validate -var-file=windows_server2016_proxmox_cloudinit.pkvars.hcl .

packer build -var-file=windows_server2016_proxmox_cloudinit.pkvars.hcl .

Provisionnement

Les variables importantes sont dans /root/GOAD/globalsettings.ini et /root/.goad/goad.ini

Si vous avez fait d'autres modifications aux ips, proxmox_pool, proxmox_node, le stockage, etc. modifiez-les ici

Vous n'avez pas besoin de modifier les valeurs par défaut dans goad.ini car nous passerons les variables directement dans la commande. Cependant, modifiez les valeurs sous [proxmox] si vous avez un nom différent pour le pool ou le nœud

Exécuter : Cela peut prendre un certain temps

cd /root/GOAD 
./goad.sh -t check -l GOAD -p proxmox -ip 192.168.10
./goad.sh -t install -l GOAD -p proxmox -ip 192.168.10

Saisissez votre mot de passe pour les deux invites pour l'utilisateur infra_as_code@pve que vous avez créé précédemment

Cela Provisioning

Important variables are in /root/GOAD/globalsettings.ini and /root/.goad/goad.ini

If you made other changes to ips, proxmox_pool, proxmox_node, the storage, etc. change them here

You don't have to change the default values in goad.ini because we will pass variables directly in the command. However change values under [proxmox] if you have a different name for the pool or node

Run : This may take a bit

cd /root/GOAD 
./goad.sh -t check -l GOAD -p proxmox -ip 192.168.10
./goad.sh -t install -l GOAD -p proxmox -ip 192.168.10

Input your password for the two prompts for the infra_as_code@pve user you created earlier

Cela m’a pris environ une heure, mais les cinq machines virtuelles ont été créées.

Si vous rencontrez des problèmes, vérifiez la connexion Internet ainsi que la résolution DNS des machines. Les erreurs les plus courantes viennent du fait que les machines virtuelles créées n’ont pas de résolution DNS ou d’accès à Internet. Vous pouvez vérifier cela avec des commandes comme dig ou route, ou en utilisant les outils de diagnostic de Proxmox.