Files
bunkerwebpoc/inventory/group_vars/all.yml
T

92 lines
4.6 KiB
YAML

---
# =====================================================================
# Variables communes du PoC BunkerWeb
# Les valeurs marquées "A ADAPTER" dépendent de votre infra.
# =====================================================================
# --- Domaine de test -------------------------------------------------
# Les sites seront www.<domaine>, shop.<domaine>, api.<domaine>, bwui.<domaine>
# ".internal" est réservé par l'ICANN pour l'usage privé : pas de collision possible.
poc_domain: bwpoc.vlab.bzh # A ADAPTER : bwpoc.internal pour un labo fermé (wildcard *.vlab.bzh -> Traefik)
# --- TLS ----------------------------------------------------------------
# selfsigned : certificats auto-signés (labo fermé, domaine non public)
# letsencrypt : ACME HTTP-01, les 4 noms doivent pointer sur le WAF et le port 80 être joignable d'Internet
poc_tls: selfsigned
poc_letsencrypt_email: ""
poc_letsencrypt_staging: false # true pour tester sans consommer les quotas Let's Encrypt
# Reverse proxy en frontal (Traefik, HAProxy...) qui termine le TLS public et relaie vers
# le WAF (https://<waf>:443, certificat auto-signé à accepter côté proxy) : ses IP, pour
# que BunkerWeb prenne l'IP réelle du client dans X-Forwarded-For (bans, limites, listes).
poc_trusted_proxies: ["172.16.16.21"] # Traefik de vlab.bzh ; [] sans reverse proxy
# --- Exposition publique ------------------------------------------------
# Sites réservés à certaines IP sources (403 pour les autres, sauf challenge ACME).
# Le client de test du PoC est toujours autorisé. Liste vide = pas de restriction.
poc_restricted_sites: [bwui]
poc_allowed_sources: ["172.16.0.0/12", "192.168.0.0/16"] # réseaux privés ; ajouter ses IP publiques
# --- Proxmox ----------------------------------------------------------
pve_node: lancelot
pve_storage: zfs # stockage ZFS de lancelot
# Réseau "LAB", VLAN 200, adressage par DHCP (passerelle et DNS fournis).
# Si LAB est un VNet SDN : pve_bridge: LAB et pve_vlan_tag: ""
pve_bridge: vmbr0
pve_vlan_tag: "200"
pve_pool: bwpoc # pool délégué au compte dédié
# Compte dédié pour le clonage par l'API (voir README, "Compte Proxmox dédié").
# Jeton API (PVE_TOKEN_SECRET) prioritaire, sinon mot de passe (PROXMOX_PASSWORD).
pve_api_user: "{{ lookup('ansible.builtin.env', 'PROXMOX_CLAUDE') | default('bwpoc@pve', true) }}"
pve_api_token_id: ansible
pve_api_token_secret: "{{ lookup('ansible.builtin.env', 'PVE_TOKEN_SECRET') }}"
pve_api_password: "{{ lookup('ansible.builtin.env', 'PROXMOX_PASSWORD') }}"
pve_validate_certs: false # certificat auto-signé du nœud
# Modèle cloud-init Debian 13 AVEC qemu-guest-agent installé et machine-id vierge.
# Sur lancelot : 9100 "debian13-bwpoc", dérivé de 9001 (agent ajouté, cloud-init clean).
# pve_template_create: true pour le fabriquer depuis l'image officielle (SSH root sur le nœud).
pve_template_create: false
pve_template_vmid: 9100
pve_template_name: debian13-bwpoc
pve_image_url: https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2
pve_image_path: /var/lib/vz/template/debian-13-genericcloud-amd64.qcow2
# --- Accès aux VM -----------------------------------------------------
poc_vm_user: debian
# Clé injectée par cloud-init : la première trouvée.
poc_ssh_pubkey_file: "{{ lookup('ansible.builtin.first_found', ['~/.ssh/id_ed25519.pub', '~/.ssh/id_rsa.pub'] | map('expanduser') | list) }}"
# --- Versions (épinglées) --------------------------------------------
bunkerweb_version: "1.6.17"
mariadb_image: "mariadb:11"
redis_image: "redis:8-alpine"
juiceshop_image: "bkimminich/juice-shop:v20.3.0"
httpbin_image: "mccutchen/go-httpbin:2.26.0"
nginx_image: "nginx:1.30-alpine"
# --- Arborescence sur les VM -----------------------------------------
poc_base_dir: /opt/bwpoc
# --- Ports publiés par la VM applis (mode split) ---------------------
apps_ports:
www: 8081
shop: 8082
api: 8083
# Ports d'écoute dans les conteneurs (utilisés en mode single)
apps_internal_ports:
www: 80
shop: 3000
api: 8080
# Sources autorisées à joindre directement les applis, en plus du WAF.
# Ajoutez l'IP du client pour comparer "avec / sans WAF" (voir README).
apps_direct_access_sources: []
# Mode calculé : "single" si WAF et applis sont sur le même hôte.
poc_mode: "{{ 'single' if (groups['apps'] | first) == (groups['bunkerweb'] | first) else 'split' }}"
waf_ip: "{{ hostvars[groups['bunkerweb'] | first]['ansible_host'] }}"
apps_ip: "{{ hostvars[groups['apps'] | first]['ansible_host'] }}"
client_ip: "{{ hostvars[groups['client'] | first]['ansible_host'] }}"