Decouplage moteur/instance Phase 3 (modele A) : deux depots
Le contenu de instance/ part dans un depot d'instance dedie (OPS-Chezlepro). Set-OPS devient le moteur pur (aucune donnee Chezlepro). L'instance est montee via un symlink instance -> ../OPS-Chezlepro (gitignore) ; le defaut SETOPS_INSTANCE=instance la resout sans config. Le moteur regenere hosts.yml DANS le depot d'instance. .ansible-lint exclut instance/. Valide : diff vide, ansible-lint 0 echec, inventaire-verifier, instancier-appliquer. Modele A (freres) jusqu'a preuve du concept ; modele B (sous-module) pour la meute ensuite. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
3b7f3098f2
commit
780b1e6b24
32 changed files with 31 additions and 870 deletions
|
|
@ -3,4 +3,4 @@
|
||||||
# genere par safe_dump. Les regles yaml d'ansible-lint ne s'y appliquent pas.
|
# genere par safe_dump. Les regles yaml d'ansible-lint ne s'y appliquent pas.
|
||||||
exclude_paths:
|
exclude_paths:
|
||||||
- docs/
|
- docs/
|
||||||
- instance/plan/
|
- instance/
|
||||||
|
|
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,6 +1,6 @@
|
||||||
*.retry
|
*.retry
|
||||||
# Inventaire genere depuis le plan (artefact, make instancier ; pas une source).
|
# Instance (plan + inventaire) : depot separe, monte ici par symlink (modele A).
|
||||||
instance/inventories/*/hosts.genere.yml
|
/instance
|
||||||
.vault-pass
|
.vault-pass
|
||||||
facts_cache/
|
facts_cache/
|
||||||
.ansible/
|
.ansible/
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
## 2026-06-23
|
## 2026-06-23
|
||||||
|
|
||||||
### Modifié
|
### Modifié
|
||||||
|
- **Découpage moteur/instance — Phase 3 (modèle A) : deux dépôts.** Le contenu de `instance/` (plan + inventaire) part dans un **dépôt d'instance dédié** (`OPS-Chezlepro` pour Chezlepro, sur la forge). `Set-OPS` devient le **moteur pur** (rôles, scripts, playbooks, guides, exemples). L'instance est **montée via un symlink** `instance -> ../OPS-Chezlepro` (gitignoré) : le défaut `SETOPS_INSTANCE=instance` la résout sans configuration. Le moteur lit le plan et **régénère `hosts.yml` dans le dépôt d'instance**. `.ansible-lint` exclut `instance/`. Validé : diff vide, `ansible-lint` 0 échec, `make inventaire-verifier`, `instancier-appliquer`. **Modèle A (dépôts frères)** retenu jusqu'à preuve du concept ; le **modèle B (moteur en sous-module)** pour la meute viendra ensuite. Le moteur ne contient plus aucune donnée Chezlepro.
|
||||||
- **Découpage moteur/instance — Phase 2b : sortir l'inventaire dans `instance/inventories/`.** L'inventaire (hôtes générés, `group_vars`, vault) quitte `inventories/` pour `instance/inventories/`. Suivent : `ansible.cfg`, le `Makefile` (`export SETOPS_INSTANCE ?= instance`, chemins dérivés), les scripts (`INSTANCE / "inventories/..."`), `config_proxmox.py`, `.gitignore`. Les docs primaires (`AGENTS.md`, `README.md`, `docs/plan-et-generation.md`, `docs/architecture-set-ops.md`) reflètent le layout `instance/`. Non destructif : diff vide, `ansible-lint` 0 échec, `make inventaire-verifier` OK. *(Docs secondaires à rafraîchir ; Phase 3 : deux dépôts.)*
|
- **Découpage moteur/instance — Phase 2b : sortir l'inventaire dans `instance/inventories/`.** L'inventaire (hôtes générés, `group_vars`, vault) quitte `inventories/` pour `instance/inventories/`. Suivent : `ansible.cfg`, le `Makefile` (`export SETOPS_INSTANCE ?= instance`, chemins dérivés), les scripts (`INSTANCE / "inventories/..."`), `config_proxmox.py`, `.gitignore`. Les docs primaires (`AGENTS.md`, `README.md`, `docs/plan-et-generation.md`, `docs/architecture-set-ops.md`) reflètent le layout `instance/`. Non destructif : diff vide, `ansible-lint` 0 échec, `make inventaire-verifier` OK. *(Docs secondaires à rafraîchir ; Phase 3 : deux dépôts.)*
|
||||||
- **Découpage moteur/instance — Phase 2a : sortir le plan dans `instance/plan/`.** Les 5 registres (`serveurs`, `applications`, `bases-donnees`, `domaines`, `nomenclature`) quittent `docs/` pour `instance/plan/`. Les scripts les localisent via **`SETOPS_INSTANCE`** (variable d'env, défaut `<dépôt>/instance`) ; les rôles/playbooks via **`setops_plan_dir`** (group_vars d'instance). `docs/` ne garde que les guides `.md` + `dependances-groupes.yml` (moteur). `.ansible-lint` exclut `instance/plan/` (registres de données). Non destructif : diff vide, `ansible-lint` 0 échec, `include_vars` via `setops_plan_dir` testé. *(Phase 2b : sortir l'inventaire ; Phase 3 : deux dépôts.)*
|
- **Découpage moteur/instance — Phase 2a : sortir le plan dans `instance/plan/`.** Les 5 registres (`serveurs`, `applications`, `bases-donnees`, `domaines`, `nomenclature`) quittent `docs/` pour `instance/plan/`. Les scripts les localisent via **`SETOPS_INSTANCE`** (variable d'env, défaut `<dépôt>/instance`) ; les rôles/playbooks via **`setops_plan_dir`** (group_vars d'instance). `docs/` ne garde que les guides `.md` + `dependances-groupes.yml` (moteur). `.ansible-lint` exclut `instance/plan/` (registres de données). Non destructif : diff vide, `ansible-lint` 0 échec, `include_vars` via `setops_plan_dir` testé. *(Phase 2b : sortir l'inventaire ; Phase 3 : deux dépôts.)*
|
||||||
- **Découpage moteur/instance — Phase 1b : neutraliser la marque `chezlepro`.** Les noms de fichiers gérés par les rôles (`99-chezlepro.conf`, `chezlepro_filter`, `chezlepro-bind.conf`, `/etc/redis/chezlepro.conf`, etc.) et les 14 templates correspondants passent à la marque neutre du moteur **`setops`** (`git mv` + références `src`/`dest`). Un loup ne déploie plus de fichiers marqués « chezlepro ». Cohérence `src ↔ template` vérifiée, `ansible-lint` 0 échec, diff vide. (Les README gardent leurs exemples ; génériciser plus tard.)
|
- **Découpage moteur/instance — Phase 1b : neutraliser la marque `chezlepro`.** Les noms de fichiers gérés par les rôles (`99-chezlepro.conf`, `chezlepro_filter`, `chezlepro-bind.conf`, `/etc/redis/chezlepro.conf`, etc.) et les 14 templates correspondants passent à la marque neutre du moteur **`setops`** (`git mv` + références `src`/`dest`). Un loup ne déploie plus de fichiers marqués « chezlepro ». Cohérence `src ↔ template` vérifiée, `ansible-lint` 0 échec, diff vide. (Les README gardent leurs exemples ; génériciser plus tard.)
|
||||||
|
|
|
||||||
|
|
@ -150,3 +150,30 @@ make instancier # vérifier le diff vide
|
||||||
```
|
```
|
||||||
|
|
||||||
C'est ainsi que le plan a été initialisé sans perte, avec diff vide vérifié.
|
C'est ainsi que le plan a été initialisé sans perte, avec diff vide vérifié.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Moteur et instance : deux dépôts
|
||||||
|
|
||||||
|
Le **moteur** (ce dépôt, `Set-OPS`) est générique et partageable ; il ne contient
|
||||||
|
aucune donnée d'instance. Une **instance** (le plan + l'inventaire d'un loup) vit
|
||||||
|
dans son **propre dépôt** (ex. `OPS-Chezlepro`).
|
||||||
|
|
||||||
|
Le moteur localise l'instance via **`SETOPS_INSTANCE`** (défaut : `instance`). Deux
|
||||||
|
modèles :
|
||||||
|
|
||||||
|
- **Modèle A — dépôts frères** (en cours) : moteur et instance côte à côte ; un
|
||||||
|
symlink `instance -> ../OPS-Chezlepro` (gitignoré) fait que le défaut résout
|
||||||
|
l'instance sans configuration. Idéal quand on développe le moteur *et* l'instance.
|
||||||
|
- **Modèle B — moteur en sous-module** (futur, pour la meute) : l'instance épingle
|
||||||
|
une version du moteur ; `SETOPS_INSTANCE` pointe la racine de l'instance.
|
||||||
|
|
||||||
|
Pour brancher une instance (modèle A) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd Set-OPS
|
||||||
|
ln -s ../OPS-Chezlepro instance # ou : export SETOPS_INSTANCE=/chemin/instance
|
||||||
|
make inventaire-verifier # lit l'instance via le symlink
|
||||||
|
```
|
||||||
|
|
||||||
|
Le moteur écrit `hosts.yml` (généré) **dans le dépôt d'instance**, jamais dans le sien.
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
chezlepro_timezone: "America/Toronto"
|
|
||||||
|
|
||||||
# Identite de l'instance : domaine DNS interne (un autre loup met le sien).
|
|
||||||
domaine_interne: "chezlepro.internal"
|
|
||||||
|
|
||||||
# Chemin du plan de l'instance (registres). Phase 3 : ajuster si moteur externe.
|
|
||||||
setops_plan_dir: "{{ playbook_dir }}/../../instance/plan"
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
---
|
|
||||||
# Variables de construction du golden template Debian 13 Proxmox.
|
|
||||||
|
|
||||||
sudo_ansible_admin_user: "ansible"
|
|
||||||
|
|
||||||
# SSH : cloud-init doit avoir injecté ciuser et clé publique avant Ansible.
|
|
||||||
ssh_baseline_password_authentication: "no"
|
|
||||||
ssh_baseline_permit_root_login: "no"
|
|
||||||
ssh_baseline_pubkey_authentication: "yes"
|
|
||||||
|
|
||||||
ssh_hardening_port: 22
|
|
||||||
ssh_hardening_password_authentication: "no"
|
|
||||||
ssh_hardening_permit_root_login: "no"
|
|
||||||
ssh_hardening_pubkey_authentication: "yes"
|
|
||||||
ssh_hardening_client_alive_interval: 300
|
|
||||||
ssh_hardening_client_alive_count_max: 2
|
|
||||||
ssh_hardening_max_auth_tries: 3
|
|
||||||
ssh_hardening_login_grace_time: "20s"
|
|
||||||
|
|
||||||
systemd_ssh_auto_disable: true
|
|
||||||
|
|
||||||
cloud_init_ssh_pwauth: false
|
|
||||||
cloud_init_manage_etc_hosts: true
|
|
||||||
cloud_init_disable_root: true
|
|
||||||
cloud_init_ssh_deletekeys: true
|
|
||||||
|
|
||||||
# Pare-feu : préparé mais non activé dans le template.
|
|
||||||
nftables_baseline_enabled: false
|
|
||||||
nftables_baseline_allow_ssh: true
|
|
||||||
nftables_baseline_allow_icmp: true
|
|
||||||
nftables_baseline_ssh_port: 22
|
|
||||||
nftables_baseline_input_policy: "drop"
|
|
||||||
nftables_baseline_forward_policy: "drop"
|
|
||||||
nftables_baseline_output_policy: "accept"
|
|
||||||
nftables_baseline_extra_tcp_ports: []
|
|
||||||
nftables_baseline_extra_udp_ports: []
|
|
||||||
|
|
||||||
fail2ban_ssh_enabled: true
|
|
||||||
fail2ban_ssh_port: 22
|
|
||||||
fail2ban_ssh_bantime: "1h"
|
|
||||||
fail2ban_ssh_findtime: "10m"
|
|
||||||
fail2ban_ssh_maxretry: 5
|
|
||||||
|
|
||||||
auditd_enabled: true
|
|
||||||
apparmor_enabled: true
|
|
||||||
sysctl_hardening_apply: true
|
|
||||||
core_dumps_disable: true
|
|
||||||
|
|
||||||
unattended_upgrades_enabled: true
|
|
||||||
unattended_upgrades_remove_unused_dependencies: true
|
|
||||||
unattended_upgrades_automatic_reboot: false
|
|
||||||
|
|
||||||
journald_system_max_use: "200M"
|
|
||||||
journald_runtime_max_use: "100M"
|
|
||||||
journald_max_retention_sec: "1month"
|
|
||||||
|
|
||||||
template_cleanup_confirm: false
|
|
||||||
template_cleanup_admin_user: "ansible"
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
# Copier ce fichier vers proxmox.vault.yml, puis le chiffrer avec :
|
|
||||||
# ansible-vault encrypt inventories/lab/group_vars/proxmox.vault.yml
|
|
||||||
#
|
|
||||||
# Ne jamais versionner proxmox.vault.yml.
|
|
||||||
|
|
||||||
proxmox_api_token_id: ""
|
|
||||||
proxmox_api_token_secret: ""
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
# Parametres non sensibles pour les operations Proxmox.
|
|
||||||
# Les secrets API doivent aller dans proxmox.vault.yml.
|
|
||||||
|
|
||||||
proxmox_api_host: asgard
|
|
||||||
proxmox_api_user: ansible@pve
|
|
||||||
proxmox_api_port: '8006'
|
|
||||||
proxmox_validate_certs: false
|
|
||||||
proxmox_clone_noeud: asgard
|
|
||||||
proxmox_clone_vmid_modele: 99999
|
|
||||||
proxmox_clone_source_nom: modeleChezlepro
|
|
||||||
proxmox_clone_stockage: TrueNAS
|
|
||||||
proxmox_clone_format: ''
|
|
||||||
proxmox_clone_complet: true
|
|
||||||
proxmox_clone_timeout: 600
|
|
||||||
proxmox_clone_disque: scsi0
|
|
||||||
proxmox_clone_interface: net0
|
|
||||||
proxmox_clone_pont: vmbr1
|
|
||||||
proxmox_clone_parefeu_interface: false
|
|
||||||
proxmox_clone_demarrer: true
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
all:
|
|
||||||
children:
|
|
||||||
modeles_vm:
|
|
||||||
hosts:
|
|
||||||
basiqueChezlepro:
|
|
||||||
ansible_host: 10.1.99.99
|
|
||||||
ansible_user: ansible
|
|
||||||
ansible_become: true
|
|
||||||
|
|
||||||
serveur_debian:
|
|
||||||
hosts: {}
|
|
||||||
|
|
||||||
serveur_durci:
|
|
||||||
hosts: {}
|
|
||||||
|
|
||||||
serveur_web_frontal:
|
|
||||||
hosts: {}
|
|
||||||
|
|
||||||
serveur_web_dorsal:
|
|
||||||
hosts: {}
|
|
||||||
|
|
||||||
hotes_proxmox:
|
|
||||||
hosts: {}
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
# Variables globales de production.
|
|
||||||
# Les politiques Debian communes sont dans group_vars/serveur_debian.yml.
|
|
||||||
|
|
||||||
# Identite de l'instance : domaine DNS interne (un autre loup met le sien).
|
|
||||||
domaine_interne: "chezlepro.internal"
|
|
||||||
|
|
||||||
# Chemin du plan de l'instance (registres). Phase 3 : ajuster si moteur externe.
|
|
||||||
setops_plan_dir: "{{ playbook_dir }}/../../instance/plan"
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
# Variables de l'intégration cliente DNS.
|
|
||||||
|
|
||||||
client_dns_zone: "chezlepro.internal"
|
|
||||||
client_dns_search_domains:
|
|
||||||
- "{{ client_dns_zone }}"
|
|
||||||
|
|
||||||
# La modification du resolver est protegee. Activer ces deux variables seulement
|
|
||||||
# lorsque le serveur DNS interne et la zone ont ete verifies.
|
|
||||||
client_dns_apply: false
|
|
||||||
client_dns_confirm: false
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite identite utilisateur cliente (hotes authentifiant via OpenLDAP).
|
|
||||||
|
|
||||||
client_ldap_uri: "ldap://idm-01.chezlepro.internal"
|
|
||||||
client_ldap_base_dn: "dc=chezlepro,dc=internal"
|
|
||||||
|
|
||||||
# Bind anonyme par defaut. Pour un compte de lecture dedie, definir ici
|
|
||||||
# client_ldap_bind_dn et client_ldap_bind_password ("{{ vault_ldap_sssd }}" via Vault).
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite PKI cliente (tout hote devant une identite machine).
|
|
||||||
|
|
||||||
client_pki_ca_url: "https://infra-pki-01.chezlepro.internal:8443"
|
|
||||||
client_pki_provisioner: "admin@chezlepro.internal"
|
|
||||||
|
|
||||||
# Secrets OBLIGATOIRES, a fournir via Ansible Vault avant tout deploiement reel :
|
|
||||||
# client_pki_ca_fingerprint: "{{ vault_step_ca_fingerprint }}"
|
|
||||||
# client_pki_provisioner_password: "{{ vault_step_ca_provisioner_password }}"
|
|
||||||
# Le provisioner password est PARTAGE avec serveur_step_ca : le placer dans un
|
|
||||||
# vault partage (ex. group_vars/all/) lisible par les deux groupes.
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite relais mail client (hotes relayant vers serveur_sendmail).
|
|
||||||
|
|
||||||
client_smtp_relais: "infra-mail-01.chezlepro.internal"
|
|
||||||
client_smtp_port: 25
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
---
|
|
||||||
# Variables de conformité communes aux VM Debian déployées.
|
|
||||||
|
|
||||||
sudo_ansible_admin_user: "ansible"
|
|
||||||
|
|
||||||
ssh_baseline_password_authentication: "no"
|
|
||||||
ssh_baseline_permit_root_login: "no"
|
|
||||||
ssh_baseline_pubkey_authentication: "yes"
|
|
||||||
|
|
||||||
ssh_hardening_port: 22
|
|
||||||
ssh_hardening_password_authentication: "no"
|
|
||||||
ssh_hardening_permit_root_login: "no"
|
|
||||||
ssh_hardening_pubkey_authentication: "yes"
|
|
||||||
ssh_hardening_client_alive_interval: 300
|
|
||||||
ssh_hardening_client_alive_count_max: 2
|
|
||||||
ssh_hardening_max_auth_tries: 3
|
|
||||||
ssh_hardening_login_grace_time: "20s"
|
|
||||||
|
|
||||||
systemd_ssh_auto_disable: true
|
|
||||||
|
|
||||||
cloud_init_ssh_pwauth: false
|
|
||||||
cloud_init_manage_etc_hosts: true
|
|
||||||
cloud_init_disable_root: true
|
|
||||||
cloud_init_ssh_deletekeys: true
|
|
||||||
|
|
||||||
# Pare-feu : ne pas activer globalement sans validation des règles par rôle.
|
|
||||||
nftables_baseline_enabled: false
|
|
||||||
nftables_baseline_allow_ssh: true
|
|
||||||
nftables_baseline_allow_icmp: true
|
|
||||||
nftables_baseline_ssh_port: 22
|
|
||||||
nftables_baseline_input_policy: "drop"
|
|
||||||
nftables_baseline_forward_policy: "drop"
|
|
||||||
nftables_baseline_output_policy: "accept"
|
|
||||||
nftables_baseline_extra_tcp_ports: []
|
|
||||||
nftables_baseline_extra_udp_ports: []
|
|
||||||
|
|
||||||
fail2ban_ssh_enabled: true
|
|
||||||
fail2ban_ssh_port: 22
|
|
||||||
fail2ban_ssh_bantime: "1h"
|
|
||||||
fail2ban_ssh_findtime: "10m"
|
|
||||||
fail2ban_ssh_maxretry: 5
|
|
||||||
|
|
||||||
auditd_enabled: true
|
|
||||||
apparmor_enabled: true
|
|
||||||
sysctl_hardening_apply: true
|
|
||||||
core_dumps_disable: true
|
|
||||||
|
|
||||||
unattended_upgrades_enabled: true
|
|
||||||
unattended_upgrades_remove_unused_dependencies: true
|
|
||||||
unattended_upgrades_automatic_reboot: false
|
|
||||||
|
|
||||||
journald_system_max_use: "200M"
|
|
||||||
journald_runtime_max_use: "100M"
|
|
||||||
journald_max_retention_sec: "1month"
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite Forgejo (forge-01, VLAN 15).
|
|
||||||
|
|
||||||
serveur_forgejo_hostname: "forge.chezlepro.internal"
|
|
||||||
serveur_forgejo_db_host: "10.1.13.11" # data-01
|
|
||||||
|
|
||||||
# Secrets OBLIGATOIRES via Ansible Vault (vault partage pour vault_bd_forgejo) :
|
|
||||||
# serveur_forgejo_secret_key, serveur_forgejo_internal_token,
|
|
||||||
# serveur_forgejo_admin_password, vault_bd_forgejo
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite Grafana (obs-01, VLAN 14).
|
|
||||||
|
|
||||||
serveur_grafana_hostname: "grafana.chezlepro.internal"
|
|
||||||
|
|
||||||
# Secret OBLIGATOIRE, a fournir via Ansible Vault avant tout deploiement reel :
|
|
||||||
# serveur_grafana_admin_password: "{{ vault_grafana_admin }}"
|
|
||||||
# Convertir en dossier group_vars/serveur_grafana/ avec main.yml + vault.yml (chiffre).
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite supervision Icinga (mon-01, VLAN 14).
|
|
||||||
|
|
||||||
serveur_icinga_db_host: "10.1.13.11" # data-01 (serveur_postgresql)
|
|
||||||
|
|
||||||
# Secret BD OBLIGATOIRE, a fournir via Ansible Vault (partage avec serveur_postgresql) :
|
|
||||||
# vault_bd_icingadb: "..."
|
|
||||||
# A placer dans un vault partage (ex. group_vars/all/) lisible par les deux groupes.
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite Keycloak (idm-01, VLAN 12).
|
|
||||||
|
|
||||||
serveur_keycloak_hostname: "keycloak.chezlepro.internal"
|
|
||||||
serveur_keycloak_db_host: "10.1.13.11" # data-01 (serveur_postgresql)
|
|
||||||
|
|
||||||
# Secrets OBLIGATOIRES, a fournir via Ansible Vault avant tout deploiement reel :
|
|
||||||
# - serveur_keycloak_admin_password: "{{ vault_keycloak_admin }}" (admin bootstrap)
|
|
||||||
# - vault_bd_keycloak: "..." (mot de passe BD, partage avec serveur_postgresql)
|
|
||||||
# Convertir en dossier group_vars/serveur_keycloak/ avec main.yml (clair) + vault.yml (chiffre).
|
|
||||||
# Le secret BD (vault_bd_keycloak) doit etre lisible aussi par serveur_postgresql
|
|
||||||
# (placer dans un vault partage, ex. group_vars/all/).
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite nginx / edge (infra-edge-01, VLAN 11).
|
|
||||||
|
|
||||||
# Sites de reverse proxy : a declarer ici quand un service web doit etre publie.
|
|
||||||
# L'amont pointe vers l'IP interne et le port du service (cf. nomenclature).
|
|
||||||
serveur_nginx_sites: []
|
|
||||||
# - nom: forge
|
|
||||||
# domaine: forge.chezlepro.internal
|
|
||||||
# amont: "http://10.1.15.11:3000"
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite annuaire OpenLDAP (idm-01, VLAN 12).
|
|
||||||
|
|
||||||
serveur_openldap_domaine: "chezlepro.internal"
|
|
||||||
serveur_openldap_organisation: "Chezlepro Inc"
|
|
||||||
|
|
||||||
# Secret OBLIGATOIRE, a fournir via Ansible Vault avant tout deploiement reel.
|
|
||||||
# Convertir en dossier group_vars/serveur_openldap/ avec :
|
|
||||||
# main.yml : serveur_openldap_admin_password: "{{ vault_openldap_admin }}"
|
|
||||||
# vault.yml : vault_openldap_admin: "..." (chiffre ansible-vault)
|
|
||||||
# Tant qu'il est absent, le role refuse de s'executer (assertion explicite).
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite PostgreSQL (zone donnees, VLAN 13).
|
|
||||||
|
|
||||||
serveur_postgresql_reseaux_autorises:
|
|
||||||
- "10.1.0.0/16"
|
|
||||||
|
|
||||||
# Comptes et bases applicatifs : a declarer ici quand un service en a besoin,
|
|
||||||
# avec les mots de passe references depuis Ansible Vault (jamais en clair).
|
|
||||||
serveur_postgresql_comptes: []
|
|
||||||
serveur_postgresql_bases: []
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
---
|
|
||||||
# Variables du service DNS interne PowerDNS.
|
|
||||||
|
|
||||||
serveur_powerdns_zone: "chezlepro.internal"
|
|
||||||
serveur_powerdns_nameserver: "ns1"
|
|
||||||
serveur_powerdns_contact: "hostmaster.chezlepro.internal"
|
|
||||||
serveur_powerdns_serial: 2026062201
|
|
||||||
serveur_powerdns_inventory_groups:
|
|
||||||
- hotes_actifs
|
|
||||||
serveur_powerdns_records:
|
|
||||||
- name: "dns"
|
|
||||||
type: "CNAME"
|
|
||||||
value: "ns1.{{ serveur_powerdns_zone }}."
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite Redis (data-01, VLAN 13).
|
|
||||||
|
|
||||||
serveur_redis_maxmemory: "256mb"
|
|
||||||
|
|
||||||
# Secret OBLIGATOIRE, a fournir via Ansible Vault avant tout deploiement reel :
|
|
||||||
# serveur_redis_password: "{{ vault_redis }}"
|
|
||||||
# Convertir en dossier group_vars/serveur_redis/ avec main.yml + vault.yml (chiffre).
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite relais SMTP (infra-mail-01, VLAN 11).
|
|
||||||
|
|
||||||
serveur_sendmail_domaine: "chezlepro.internal"
|
|
||||||
serveur_sendmail_reseaux_autorises:
|
|
||||||
- "127.0.0.0/8"
|
|
||||||
- "[::1]/128"
|
|
||||||
- "10.1.0.0/16"
|
|
||||||
|
|
||||||
# Smarthost amont : vide = remise directe. A renseigner si relais externe requis.
|
|
||||||
serveur_sendmail_smarthost: ""
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
---
|
|
||||||
# Conformite AC interne step-ca (infra-pki-01, VLAN 11).
|
|
||||||
|
|
||||||
serveur_step_ca_nom: "Chezlepro Internal CA"
|
|
||||||
serveur_step_ca_adresse: ":8443"
|
|
||||||
serveur_step_ca_acme: true
|
|
||||||
|
|
||||||
# Secrets OBLIGATOIRES, a fournir via Ansible Vault avant tout deploiement reel.
|
|
||||||
# Convertir ce fichier en dossier group_vars/serveur_step_ca/ avec :
|
|
||||||
# main.yml (en clair) :
|
|
||||||
# serveur_step_ca_password: "{{ vault_step_ca_password }}"
|
|
||||||
# serveur_step_ca_provisioner_password: "{{ vault_step_ca_provisioner_password }}"
|
|
||||||
# vault.yml (chiffre ansible-vault) :
|
|
||||||
# vault_step_ca_password: "..."
|
|
||||||
# vault_step_ca_provisioner_password: "..."
|
|
||||||
# Tant qu'ils sont absents, le role refuse de s'executer (assertion explicite).
|
|
||||||
|
|
@ -1,244 +0,0 @@
|
||||||
# Inventaire GENERE depuis le plan (make instancier / instancier-appliquer).
|
|
||||||
# NE PAS editer a la main : edite docs/serveurs.yml + docs/applications.yml.
|
|
||||||
# Source : docs/serveurs.yml + docs/applications.yml + docs/nomenclature.yml.
|
|
||||||
all:
|
|
||||||
children:
|
|
||||||
client_dns:
|
|
||||||
hosts:
|
|
||||||
collab-01: null
|
|
||||||
web-frontal-01: null
|
|
||||||
client_supervision:
|
|
||||||
hosts:
|
|
||||||
web-frontal-01: null
|
|
||||||
hotes_actifs:
|
|
||||||
hosts: {}
|
|
||||||
hotes_planifies:
|
|
||||||
hosts:
|
|
||||||
collab-01:
|
|
||||||
ansible_host: 10.1.15.21
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.15.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 15
|
|
||||||
proxmox_vmid: 95201
|
|
||||||
data-01:
|
|
||||||
ansible_host: 10.1.13.11
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 4
|
|
||||||
proxmox_disque_taille: 160G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_noeud: asgard
|
|
||||||
proxmox_passerelle: 10.1.13.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 13
|
|
||||||
proxmox_vmid: 93101
|
|
||||||
forge-01:
|
|
||||||
ansible_host: 10.1.15.11
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.15.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 15
|
|
||||||
proxmox_vmid: 95101
|
|
||||||
idm-01:
|
|
||||||
ansible_host: 10.1.12.11
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.12.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 12
|
|
||||||
proxmox_vmid: 92101
|
|
||||||
infra-dns-01:
|
|
||||||
ansible_host: 10.1.11.41
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.11.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 11
|
|
||||||
proxmox_vmid: 91401
|
|
||||||
infra-edge-01:
|
|
||||||
ansible_host: 10.1.11.21
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.11.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 11
|
|
||||||
proxmox_vmid: 91201
|
|
||||||
infra-mail-01:
|
|
||||||
ansible_host: 10.1.11.31
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.11.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 11
|
|
||||||
proxmox_vmid: 91301
|
|
||||||
infra-pki-01:
|
|
||||||
ansible_host: 10.1.11.11
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.11.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 11
|
|
||||||
proxmox_vmid: 91101
|
|
||||||
mon-01:
|
|
||||||
ansible_host: 10.1.14.41
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.14.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 14
|
|
||||||
proxmox_vmid: 94401
|
|
||||||
obs-01:
|
|
||||||
ansible_host: 10.1.14.11
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 4
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.14.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 14
|
|
||||||
proxmox_vmid: 94101
|
|
||||||
web-dorsal-01:
|
|
||||||
ansible_host: 10.1.15.41
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.15.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 15
|
|
||||||
proxmox_vmid: 95401
|
|
||||||
web-frontal-01:
|
|
||||||
ansible_host: 10.1.15.31
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.15.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 15
|
|
||||||
proxmox_vmid: 95301
|
|
||||||
web-frontal-02:
|
|
||||||
ansible_host: 10.1.15.32
|
|
||||||
ansible_user: ansible
|
|
||||||
proxmox_cidr: 24
|
|
||||||
proxmox_coeurs: 2
|
|
||||||
proxmox_disque_taille: 16G
|
|
||||||
proxmox_memoire: 2048
|
|
||||||
proxmox_passerelle: 10.1.15.1
|
|
||||||
proxmox_stockage: TrueNAS
|
|
||||||
proxmox_vlan: 15
|
|
||||||
proxmox_vmid: 95302
|
|
||||||
modeles_vm:
|
|
||||||
hosts: {}
|
|
||||||
serveur_collabora:
|
|
||||||
hosts:
|
|
||||||
collab-01: null
|
|
||||||
serveur_debian:
|
|
||||||
hosts:
|
|
||||||
collab-01: null
|
|
||||||
data-01: null
|
|
||||||
forge-01: null
|
|
||||||
idm-01: null
|
|
||||||
infra-dns-01: null
|
|
||||||
infra-edge-01: null
|
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
|
||||||
mon-01: null
|
|
||||||
obs-01: null
|
|
||||||
web-dorsal-01: null
|
|
||||||
web-frontal-01: null
|
|
||||||
web-frontal-02: null
|
|
||||||
serveur_durci:
|
|
||||||
hosts:
|
|
||||||
collab-01: null
|
|
||||||
data-01: null
|
|
||||||
forge-01: null
|
|
||||||
idm-01: null
|
|
||||||
infra-dns-01: null
|
|
||||||
infra-edge-01: null
|
|
||||||
infra-mail-01: null
|
|
||||||
infra-pki-01: null
|
|
||||||
mon-01: null
|
|
||||||
obs-01: null
|
|
||||||
web-dorsal-01: null
|
|
||||||
web-frontal-01: null
|
|
||||||
web-frontal-02: null
|
|
||||||
serveur_forgejo:
|
|
||||||
hosts:
|
|
||||||
forge-01: null
|
|
||||||
serveur_grafana:
|
|
||||||
hosts:
|
|
||||||
obs-01: null
|
|
||||||
serveur_icinga:
|
|
||||||
hosts:
|
|
||||||
mon-01: null
|
|
||||||
serveur_keycloak:
|
|
||||||
hosts:
|
|
||||||
idm-01: null
|
|
||||||
serveur_loki:
|
|
||||||
hosts:
|
|
||||||
obs-01: null
|
|
||||||
serveur_nextcloud:
|
|
||||||
hosts:
|
|
||||||
collab-01: null
|
|
||||||
serveur_nginx:
|
|
||||||
hosts:
|
|
||||||
infra-edge-01: null
|
|
||||||
serveur_openldap:
|
|
||||||
hosts:
|
|
||||||
idm-01: null
|
|
||||||
serveur_postgresql:
|
|
||||||
hosts:
|
|
||||||
data-01: null
|
|
||||||
serveur_powerdns:
|
|
||||||
hosts:
|
|
||||||
infra-dns-01: null
|
|
||||||
serveur_prometheus:
|
|
||||||
hosts:
|
|
||||||
obs-01: null
|
|
||||||
serveur_redis:
|
|
||||||
hosts:
|
|
||||||
data-01: null
|
|
||||||
serveur_sendmail:
|
|
||||||
hosts:
|
|
||||||
infra-mail-01: null
|
|
||||||
serveur_step_ca:
|
|
||||||
hosts:
|
|
||||||
infra-pki-01: null
|
|
||||||
serveur_web_dorsal:
|
|
||||||
hosts:
|
|
||||||
web-dorsal-01: null
|
|
||||||
serveur_web_frontal:
|
|
||||||
hosts:
|
|
||||||
web-frontal-01: null
|
|
||||||
web-frontal-02: null
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
# Registre des applications Set-OPS (application = entite pivot).
|
|
||||||
# Edite par make inventaire-ui ou scripts/applications.py.
|
|
||||||
# Une VM peut porter plusieurs applications ; une base se lie a une application.
|
|
||||||
---
|
|
||||||
applications:
|
|
||||||
collabora:
|
|
||||||
groupe: serveur_collabora
|
|
||||||
hote: collab-01
|
|
||||||
nextcloud:
|
|
||||||
groupe: serveur_nextcloud
|
|
||||||
hote: collab-01
|
|
||||||
pg-principal:
|
|
||||||
groupe: serveur_postgresql
|
|
||||||
hote: data-01
|
|
||||||
redis:
|
|
||||||
groupe: serveur_redis
|
|
||||||
hote: data-01
|
|
||||||
forge:
|
|
||||||
groupe: serveur_forgejo
|
|
||||||
hote: forge-01
|
|
||||||
keycloak:
|
|
||||||
groupe: serveur_keycloak
|
|
||||||
hote: idm-01
|
|
||||||
openldap:
|
|
||||||
groupe: serveur_openldap
|
|
||||||
hote: idm-01
|
|
||||||
powerdns:
|
|
||||||
groupe: serveur_powerdns
|
|
||||||
hote: infra-dns-01
|
|
||||||
nginx:
|
|
||||||
groupe: serveur_nginx
|
|
||||||
hote: infra-edge-01
|
|
||||||
sendmail:
|
|
||||||
groupe: serveur_sendmail
|
|
||||||
hote: infra-mail-01
|
|
||||||
step_ca:
|
|
||||||
groupe: serveur_step_ca
|
|
||||||
hote: infra-pki-01
|
|
||||||
icinga:
|
|
||||||
groupe: serveur_icinga
|
|
||||||
hote: mon-01
|
|
||||||
grafana:
|
|
||||||
groupe: serveur_grafana
|
|
||||||
hote: obs-01
|
|
||||||
loki:
|
|
||||||
groupe: serveur_loki
|
|
||||||
hote: obs-01
|
|
||||||
prometheus:
|
|
||||||
groupe: serveur_prometheus
|
|
||||||
hote: obs-01
|
|
||||||
web_dorsaux:
|
|
||||||
groupe: serveur_web_dorsal
|
|
||||||
hote: web-dorsal-01
|
|
||||||
web_frontaux:
|
|
||||||
groupe: serveur_web_frontal
|
|
||||||
hote: web-frontal-01
|
|
||||||
web_frontaux-web-frontal-02:
|
|
||||||
groupe: serveur_web_frontal
|
|
||||||
hote: web-frontal-02
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
---
|
|
||||||
# Registre des bases de donnees applicatives Set-OPS.
|
|
||||||
#
|
|
||||||
# Niveaux :
|
|
||||||
# serveurs_bd : les serveurs de base de donnees (un ou plusieurs), nommes.
|
|
||||||
# "groupe" relie un serveur nomme au groupe Ansible qui l'heberge.
|
|
||||||
# bases_donnees: une base = un identifiant unique -> serveur, base, proprietaire, secret.
|
|
||||||
# consommateur : QUI utilise la base. Interprete selon "portee" :
|
|
||||||
# portee=application : consommateur = id d'une application (docs/applications.yml)
|
|
||||||
# portee=groupe : consommateur = groupe operationnel (base PARTAGEE)
|
|
||||||
# portee=hote : consommateur = hote de l'inventaire
|
|
||||||
# Defaut : groupe (retrocompatible).
|
|
||||||
# usage : etiquette libre (principale, partagee, ...). Une appli peut avoir
|
|
||||||
# plusieurs bases (portee/usage differents).
|
|
||||||
#
|
|
||||||
# Une application A (groupe G, hote H) recoit les bases ou :
|
|
||||||
# (portee=application ET consommateur=A) OU (portee=groupe ET consommateur=G)
|
|
||||||
# OU (portee=hote ET consommateur=H). Plusieurs DSN par application sont possibles.
|
|
||||||
#
|
|
||||||
# La chaine de connexion (DSN) se derive : <type>://<proprietaire>:<secret>@<hote>:<port>/<base>
|
|
||||||
# C'est le DSN qui lie la bonne instanciation d'application a sa base.
|
|
||||||
#
|
|
||||||
# "secret" nomme une variable Ansible Vault (jamais le mot de passe en clair).
|
|
||||||
|
|
||||||
serveurs_bd:
|
|
||||||
pg-principal:
|
|
||||||
type: postgres
|
|
||||||
hote: "10.1.13.11"
|
|
||||||
port: 5432
|
|
||||||
groupe: serveur_postgresql
|
|
||||||
|
|
||||||
bases_donnees:
|
|
||||||
keycloak:
|
|
||||||
serveur: pg-principal
|
|
||||||
base: keycloak
|
|
||||||
proprietaire: keycloak
|
|
||||||
secret: vault_bd_keycloak
|
|
||||||
consommateur: serveur_keycloak
|
|
||||||
portee: groupe
|
|
||||||
usage: principale
|
|
||||||
icingadb:
|
|
||||||
serveur: pg-principal
|
|
||||||
base: icingadb
|
|
||||||
proprietaire: icingadb
|
|
||||||
secret: vault_bd_icingadb
|
|
||||||
consommateur: serveur_icinga
|
|
||||||
portee: groupe
|
|
||||||
usage: principale
|
|
||||||
forgejo:
|
|
||||||
serveur: pg-principal
|
|
||||||
base: forgejo
|
|
||||||
proprietaire: forgejo
|
|
||||||
secret: vault_bd_forgejo
|
|
||||||
consommateur: serveur_forgejo
|
|
||||||
portee: groupe
|
|
||||||
usage: principale
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
---
|
|
||||||
# Registre des domaines publics Set-OPS (publication externe des hostnames).
|
|
||||||
#
|
|
||||||
# Modele d'autorite retenu : PRIMAIRE CACHE + SECONDAIRES.
|
|
||||||
# - Le primaire (PowerDNS, backend PostgreSQL + API) detient la zone faisant
|
|
||||||
# autorite mais N'EST PAS expose a Internet (NOTIFY + AXFR seulement).
|
|
||||||
# - Les "secondaires" sont la face publique : ce sont eux dans les NS + la glue
|
|
||||||
# chez le registraire. Ils tirent la zone du primaire (AXFR authentifie TSIG).
|
|
||||||
#
|
|
||||||
# Ce registre ne decrit que les DOMAINES (zones). Le binding nom-public <-> service
|
|
||||||
# vit desormais sur l'APPLICATION : chaque application declare `expose: [FQDN...]`
|
|
||||||
# dans docs/applications.yml. nginx, la zone publique et ACME derivent les
|
|
||||||
# expositions depuis les applications (regle expositions_des_applications).
|
|
||||||
#
|
|
||||||
# Champs par domaine :
|
|
||||||
# autorite : primaire-cache | auto-heberge | delegue
|
|
||||||
# edge : groupe Ansible qui porte l'IP publique de facade (reverse proxy)
|
|
||||||
# secondaires : NS publics (FQDN) faisant face a Internet (a renseigner)
|
|
||||||
# dnssec : signature de la zone (jalon ulterieur ; false au depart)
|
|
||||||
# ttl : TTL par defaut de la zone
|
|
||||||
# mail : mx / spf / dmarc (lies a serveur_sendmail) ; vides si pas de mail
|
|
||||||
|
|
||||||
domaines_publics:
|
|
||||||
alliance-boreale.ca:
|
|
||||||
autorite: primaire-cache
|
|
||||||
edge: serveur_nginx
|
|
||||||
secondaires: [] # FQDN des NS publics secondaires - a renseigner
|
|
||||||
dnssec: false # jalon ulterieur (DS chez le registraire d'abord)
|
|
||||||
ttl: 3600
|
|
||||||
mail:
|
|
||||||
mx: []
|
|
||||||
spf: ""
|
|
||||||
dmarc: ""
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
---
|
|
||||||
# Nomenclature Set-OPS : source unique pour hostnames, VMID, VLAN et adressage.
|
|
||||||
#
|
|
||||||
# Derivations (tout part de la FONCTION de l'hote ; "domaine" est reserve au DNS) :
|
|
||||||
# hostname = <fonction>-<NN> ex. web-frontal-03
|
|
||||||
# VMID = 9 . categorie . service . NN ex. 9 5 3 03 -> 95303
|
|
||||||
# VLAN = categorie.vlan ex. 15
|
|
||||||
# IP = <prefixe_sous_reseau>.(service*10 + NN) ex. 10.1.15.33
|
|
||||||
# passerelle / CIDR : voir la categorie
|
|
||||||
#
|
|
||||||
# Contrainte : NN va de 01 a 09 par fonction (l'octet hote = service*10 + NN
|
|
||||||
# reste dans le bloc du service). Au-dela, ouvrir une nouvelle fonction ou service.
|
|
||||||
|
|
||||||
supernet: "10.1.0.0/16"
|
|
||||||
cidr_hote: 24
|
|
||||||
|
|
||||||
reservations:
|
|
||||||
passerelle: 1 # .1 = passerelle de chaque /24
|
|
||||||
reserve_min: 2 # .2 a .9 reserves (reseau, HA, futur)
|
|
||||||
reserve_max: 9
|
|
||||||
|
|
||||||
categories:
|
|
||||||
1: { libelle: "Fondations / infra", vlan: 11, sous_reseau: "10.1.11.0/24", passerelle: "10.1.11.1" }
|
|
||||||
2: { libelle: "Identite", vlan: 12, sous_reseau: "10.1.12.0/24", passerelle: "10.1.12.1" }
|
|
||||||
3: { libelle: "Donnees", vlan: 13, sous_reseau: "10.1.13.0/24", passerelle: "10.1.13.1" }
|
|
||||||
4: { libelle: "Observabilite", vlan: 14, sous_reseau: "10.1.14.0/24", passerelle: "10.1.14.1" }
|
|
||||||
5: { libelle: "Applications", vlan: 15, sous_reseau: "10.1.15.0/24", passerelle: "10.1.15.1" }
|
|
||||||
9: { libelle: "Modeles / essais", vlan: 99, sous_reseau: "10.1.99.0/24", passerelle: "10.1.99.1" }
|
|
||||||
|
|
||||||
fonctions:
|
|
||||||
infra-pki: { categorie: 1, service: 1 }
|
|
||||||
infra-edge: { categorie: 1, service: 2 }
|
|
||||||
infra-mail: { categorie: 1, service: 3 }
|
|
||||||
infra-dns: { categorie: 1, service: 4 }
|
|
||||||
idm: { categorie: 2, service: 1 }
|
|
||||||
data: { categorie: 3, service: 1 }
|
|
||||||
obs: { categorie: 4, service: 1 }
|
|
||||||
mon: { categorie: 4, service: 4 }
|
|
||||||
forge: { categorie: 5, service: 1 }
|
|
||||||
collab: { categorie: 5, service: 2 }
|
|
||||||
web-frontal: { categorie: 5, service: 3 }
|
|
||||||
web-dorsal: { categorie: 5, service: 4 }
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
# Registre des serveurs (VM) du plan Set-OPS.
|
|
||||||
# Bootstrape depuis l'inventaire (make serveurs-bootstrap). L'inventaire
|
|
||||||
# reste autorite en Phase 2 ; VMID/IP/VLAN/passerelle sont DERIVES de la
|
|
||||||
# fonction via docs/nomenclature.yml (non stockes ici).
|
|
||||||
---
|
|
||||||
serveurs:
|
|
||||||
collab-01:
|
|
||||||
fonction: collab
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
integrations:
|
|
||||||
- client_dns
|
|
||||||
data-01:
|
|
||||||
fonction: data
|
|
||||||
etat: planifie
|
|
||||||
noeud: asgard
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 160G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 4
|
|
||||||
forge-01:
|
|
||||||
fonction: forge
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
idm-01:
|
|
||||||
fonction: idm
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
infra-dns-01:
|
|
||||||
fonction: infra-dns
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
infra-edge-01:
|
|
||||||
fonction: infra-edge
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
infra-mail-01:
|
|
||||||
fonction: infra-mail
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
infra-pki-01:
|
|
||||||
fonction: infra-pki
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
mon-01:
|
|
||||||
fonction: mon
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
obs-01:
|
|
||||||
fonction: obs
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 4
|
|
||||||
web-dorsal-01:
|
|
||||||
fonction: web-dorsal
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
web-frontal-01:
|
|
||||||
fonction: web-frontal
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
integrations:
|
|
||||||
- client_dns
|
|
||||||
- client_supervision
|
|
||||||
web-frontal-02:
|
|
||||||
fonction: web-frontal
|
|
||||||
etat: planifie
|
|
||||||
stockage: TrueNAS
|
|
||||||
disque: 16G
|
|
||||||
memoire: 2048
|
|
||||||
coeurs: 2
|
|
||||||
Reference in a new issue