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/
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.