PoC BunkerWeb 1.6.17 : docker-compose sur Proxmox, déployé par Ansible
Stack BunkerWeb (scheduler, UI, MariaDB, Redis), sites de test (nginx, Juice Shop, go-httpbin), filtrage DOCKER-USER, script de tests, README et schéma d'architecture. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
099584c95c
42 files changed
+4260
No files matched your search
@@ -0,0 +1,9 @@
|
||||
---
|
||||
# Crée le modèle Debian 13 cloud-init puis clone les VM du PoC.
|
||||
# A sauter si vous fournissez vos propres VM (Debian 12/13 avec accès SSH).
|
||||
- name: Provisionner les VM sur Proxmox
|
||||
hosts: proxmox
|
||||
gather_facts: false
|
||||
roles:
|
||||
- proxmox_template
|
||||
- proxmox_vm
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: Socle des VM (paquets, résolution locale, Docker)
|
||||
hosts: poc_vms
|
||||
roles:
|
||||
- common
|
||||
- docker
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Déployer les sites de test
|
||||
hosts: apps
|
||||
roles:
|
||||
- apps
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Déployer BunkerWeb
|
||||
hosts: bunkerweb
|
||||
roles:
|
||||
- bunkerweb
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
- name: Préparer le client de test
|
||||
hosts: client
|
||||
roles:
|
||||
- client
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
# Lance la batterie de tests depuis le client et affiche le résultat.
|
||||
- name: Tests fonctionnels BunkerWeb
|
||||
hosts: client
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Exécuter bwpoc-tests
|
||||
ansible.builtin.command: "{{ poc_base_dir }}/tests/bwpoc-tests.sh"
|
||||
register: tests
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Résultat
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ tests.stdout_lines }}"
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
# Supprime les VM du PoC (le modèle est conservé, sauf -e destroy_template=true).
|
||||
- name: Détruire les VM du PoC
|
||||
hosts: proxmox
|
||||
gather_facts: false
|
||||
vars_prompt:
|
||||
- name: confirm
|
||||
prompt: "Taper 'detruire' pour supprimer les VM {{ groups['poc_vms'] | unique | join(', ') }}"
|
||||
private: false
|
||||
tasks:
|
||||
- name: Abandon sans confirmation
|
||||
ansible.builtin.meta: end_play
|
||||
when: confirm != 'detruire'
|
||||
|
||||
- name: Arrêter et supprimer les VM
|
||||
ansible.builtin.shell: |
|
||||
if qm status {{ hostvars[item].vm_id }} >/dev/null 2>&1; then
|
||||
qm stop {{ hostvars[item].vm_id }} --skiplock 1 || true
|
||||
qm destroy {{ hostvars[item].vm_id }} --purge 1 --destroy-unreferenced-disks 1
|
||||
echo destroyed
|
||||
fi
|
||||
register: destroy
|
||||
changed_when: "'destroyed' in destroy.stdout"
|
||||
loop: "{{ groups['poc_vms'] | unique }}"
|
||||
|
||||
- name: Supprimer le modèle
|
||||
ansible.builtin.shell: |
|
||||
if qm status {{ pve_template_vmid }} >/dev/null 2>&1; then
|
||||
qm destroy {{ pve_template_vmid }} --purge 1 && echo destroyed
|
||||
fi
|
||||
register: tpl_destroy
|
||||
changed_when: "'destroyed' in tpl_destroy.stdout"
|
||||
when: destroy_template | default(false) | bool
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
# Génère les fichiers compose dans build/<mode>/ sans rien déployer,
|
||||
# pour les relire ou les utiliser à la main : ansible-playbook playbooks/render.yml
|
||||
- name: Rendu local des fichiers compose
|
||||
hosts: bunkerweb:apps
|
||||
connection: local
|
||||
gather_facts: false
|
||||
vars:
|
||||
ansible_become: false
|
||||
render_dir: "{{ playbook_dir }}/../build/{{ poc_mode }}"
|
||||
ansible_default_ipv4: { interface: ens18 }
|
||||
tasks:
|
||||
- name: Répertoires de sortie
|
||||
ansible.builtin.file:
|
||||
path: "{{ render_dir }}/{{ item }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop: [bunkerweb, apps]
|
||||
run_once: true
|
||||
|
||||
- name: Compose BunkerWeb
|
||||
ansible.builtin.template:
|
||||
src: ../roles/bunkerweb/templates/compose.yml.j2
|
||||
dest: "{{ render_dir }}/bunkerweb/compose.yml"
|
||||
mode: "0600"
|
||||
when: inventory_hostname in groups['bunkerweb']
|
||||
|
||||
- name: Compose applis et filtrage
|
||||
ansible.builtin.template:
|
||||
src: "../roles/apps/templates/{{ item.src }}"
|
||||
dest: "{{ render_dir }}/apps/{{ item.dest }}"
|
||||
mode: "0644"
|
||||
loop:
|
||||
- { src: compose.yml.j2, dest: compose.yml }
|
||||
- { src: bwpoc-firewall.sh.j2, dest: bwpoc-firewall.sh }
|
||||
when: inventory_hostname in groups['apps']
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
# Déploiement complet du PoC : ansible-playbook playbooks/site.yml
|
||||
- name: Proxmox
|
||||
ansible.builtin.import_playbook: 00-proxmox.yml
|
||||
- name: Socle
|
||||
ansible.builtin.import_playbook: 10-base.yml
|
||||
- name: Applis
|
||||
ansible.builtin.import_playbook: 20-apps.yml
|
||||
- name: BunkerWeb
|
||||
ansible.builtin.import_playbook: 30-bunkerweb.yml
|
||||
- name: Client
|
||||
ansible.builtin.import_playbook: 40-client.yml
|
||||
Reference in new issue
Block a user