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

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

Les autres articles sont disponibles ici :

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 https://github.com/Orange-Cyberdefense/GOAD.git
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/GOAD
bash -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é.

J'ai utilisé Pyenev pour gérer les versions de python: https://github.com/pyenv/pyenv. J'ai installé Python 3.10.13 à la place. 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.

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

Obtenir vos Fichiers

Télécharger l'ISO Windows

Dans Local → ISO Images → download from URL, téléchargez les deux images iso windows par url :

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.pkvars.hcl.template config.auto.pkrvars.hcl
vim config.auto.pkvars.hcl

config.auto.pkrvars.hcl:

vim config.auto.pkvars.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 de goadprovisioning vers goadproxmox

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

Installer packer + terraform

curl -fsSL https://apt.releases.hashicorp.com/gpg | 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 etwindows_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 m’a pris environ une heure, mais les cinq machines virtuelles ont été créées !

Pour la suite de l'installation du lab, nous allons configurer le VPN pour accéder au réseau, et installer une VM Trapster : Partie 3 - OpenVPN + Trapster

Résolution de problème

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.