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.