déploie OpenStack 2025.2 avec Kolla-Ansible (tout-en-un, API sur dummy0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
87c8aac5f5
commit
db2842689a
12 changed files with 978 additions and 3 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,2 +1,8 @@
|
||||||
.env
|
.env
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# Secrets Kolla : ne vivent que sur le serveur (/etc/kolla)
|
||||||
|
passwords.yml
|
||||||
|
clouds.yaml
|
||||||
|
admin-openrc.sh
|
||||||
|
*-openrc.sh
|
||||||
|
|
|
||||||
10
ansible/kolla.yml
Normal file
10
ansible/kolla.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
# Étape 5 du déploiement Syllabus : préparation de Kolla-Ansible (venv,
|
||||||
|
# globals.yml, inventaire, mots de passe). Ne déploie pas OpenStack lui-même :
|
||||||
|
# voir docs/runbooks/openstack.md pour bootstrap-servers / prechecks / deploy.
|
||||||
|
- name: Préparation de Kolla-Ansible
|
||||||
|
hosts: syllabus
|
||||||
|
become: true
|
||||||
|
gather_facts: true
|
||||||
|
roles:
|
||||||
|
- kolla
|
||||||
|
|
@ -5,6 +5,15 @@
|
||||||
state: restarted
|
state: restarted
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
|
# Le rechargement commence par `flush ruleset`, qui efface aussi la table de
|
||||||
|
# fail2ban (f2b-table) : on relance fail2ban juste après pour qu'il la
|
||||||
|
# reconstruise et rebannisse les IP encore en cours de bannissement.
|
||||||
|
- name: relancer fail2ban après le pare-feu
|
||||||
|
listen: recharger nftables
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: fail2ban
|
||||||
|
state: restarted
|
||||||
|
|
||||||
- name: recharger ssh
|
- name: recharger ssh
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: ssh
|
name: ssh
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,14 @@
|
||||||
validate: "nft -c -f %s"
|
validate: "nft -c -f %s"
|
||||||
notify: recharger nftables
|
notify: recharger nftables
|
||||||
|
|
||||||
|
# Recharge même si nftables.conf n'a pas changé, pour effacer des tables
|
||||||
|
# ajoutées par un autre logiciel (ex. Docker) : -e durcissement_forcer_rechargement=true
|
||||||
|
- name: forcer le rechargement du pare-feu (sur demande)
|
||||||
|
ansible.builtin.command: /bin/true
|
||||||
|
changed_when: true
|
||||||
|
notify: recharger nftables
|
||||||
|
when: durcissement_forcer_rechargement | default(false) | bool
|
||||||
|
|
||||||
- name: appliquer le pare-feu immédiatement
|
- name: appliquer le pare-feu immédiatement
|
||||||
ansible.builtin.meta: flush_handlers
|
ansible.builtin.meta: flush_handlers
|
||||||
|
|
||||||
|
|
|
||||||
4
ansible/roles/kolla/defaults/main.yml
Normal file
4
ansible/roles/kolla/defaults/main.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
kolla_serie: "2025.2"
|
||||||
|
kolla_venv: /opt/kolla-venv
|
||||||
|
kolla_config_dir: /etc/kolla
|
||||||
120
ansible/roles/kolla/tasks/main.yml
Normal file
120
ansible/roles/kolla/tasks/main.yml
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
---
|
||||||
|
# Étape 5 : prépare Kolla-Ansible (venv, configuration, mots de passe).
|
||||||
|
# Les commandes longues (bootstrap-servers, prechecks, deploy) se lancent à la
|
||||||
|
# main, voir docs/runbooks/openstack.md.
|
||||||
|
|
||||||
|
- name: installer les dépendances système de Kolla-Ansible
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name:
|
||||||
|
- git
|
||||||
|
- python3-dev
|
||||||
|
- libffi-dev
|
||||||
|
- gcc
|
||||||
|
- libssl-dev
|
||||||
|
- libdbus-glib-1-dev
|
||||||
|
- python3-venv
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
|
||||||
|
- name: créer le venv et mettre pip à jour
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.pip:
|
||||||
|
name: pip
|
||||||
|
state: latest
|
||||||
|
virtualenv: "{{ kolla_venv }}"
|
||||||
|
virtualenv_command: python3 -m venv
|
||||||
|
|
||||||
|
- name: installer Kolla-Ansible {{ kolla_serie }}
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.pip:
|
||||||
|
name: "git+https://opendev.org/openstack/kolla-ansible@stable/{{ kolla_serie }}"
|
||||||
|
virtualenv: "{{ kolla_venv }}"
|
||||||
|
|
||||||
|
# Kolla exécute ses modules avec le Python du venv (connexion locale) : les
|
||||||
|
# bibliothèques docker et dbus doivent donc y être, pas seulement dans le système.
|
||||||
|
- name: installer les SDK docker et dbus dans le venv (contraintes {{ kolla_serie }})
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.pip:
|
||||||
|
name:
|
||||||
|
- docker
|
||||||
|
- dbus-python
|
||||||
|
extra_args: "-c https://releases.openstack.org/constraints/upper/{{ kolla_serie }}"
|
||||||
|
virtualenv: "{{ kolla_venv }}"
|
||||||
|
|
||||||
|
- name: installer le client openstack (contraintes {{ kolla_serie }})
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.pip:
|
||||||
|
name: python-openstackclient
|
||||||
|
extra_args: "-c https://releases.openstack.org/constraints/upper/{{ kolla_serie }}"
|
||||||
|
virtualenv: "{{ kolla_venv }}"
|
||||||
|
|
||||||
|
- name: rendre les commandes du venv accessibles dans le PATH
|
||||||
|
tags: [installation]
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: "{{ kolla_venv }}/bin/{{ item }}"
|
||||||
|
dest: "/usr/local/bin/{{ item }}"
|
||||||
|
state: link
|
||||||
|
loop:
|
||||||
|
- kolla-ansible
|
||||||
|
- kolla-genpwd
|
||||||
|
- openstack
|
||||||
|
|
||||||
|
- name: créer {{ kolla_config_dir }}
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ kolla_config_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0750"
|
||||||
|
|
||||||
|
- name: déployer globals.yml (versionné dans le dépôt, sans secret)
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ playbook_dir }}/../kolla/globals.yml"
|
||||||
|
dest: "{{ kolla_config_dir }}/globals.yml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: déployer l'inventaire all-in-one
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ playbook_dir }}/../kolla/all-in-one"
|
||||||
|
dest: "{{ kolla_config_dir }}/all-in-one"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
# passwords.yml n'existe que sur le serveur : jamais dans Git. On copie le
|
||||||
|
# modèle vide une seule fois, puis kolla-genpwd le remplit.
|
||||||
|
- name: copier le modèle passwords.yml s'il n'existe pas encore
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ kolla_venv }}/share/kolla-ansible/etc_examples/kolla/passwords.yml"
|
||||||
|
dest: "{{ kolla_config_dir }}/passwords.yml"
|
||||||
|
remote_src: true
|
||||||
|
force: false
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0600"
|
||||||
|
register: kolla_passwords_modele
|
||||||
|
|
||||||
|
- name: générer les mots de passe (première fois seulement)
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "{{ kolla_venv }}/bin/kolla-genpwd -p {{ kolla_config_dir }}/passwords.yml"
|
||||||
|
when: kolla_passwords_modele.changed
|
||||||
|
|
||||||
|
# kolla-genpwd réécrit le fichier en 640 : on reforce 600 à chaque passage.
|
||||||
|
- name: restreindre passwords.yml à root seul
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ kolla_config_dir }}/passwords.yml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0600"
|
||||||
|
|
||||||
|
- name: installer les dépendances Ansible de Kolla (collections Galaxy)
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "{{ kolla_venv }}/bin/kolla-ansible install-deps"
|
||||||
|
environment:
|
||||||
|
PATH: "{{ kolla_venv }}/bin:{{ ansible_env.PATH }}"
|
||||||
|
register: kolla_install_deps
|
||||||
|
changed_when: "'Installing' in kolla_install_deps.stdout"
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
# Géré par Ansible (rôle reseau-openstack) — ne pas modifier à la main.
|
|
||||||
# Nécessaire pour que le NAT masquerade du réseau externe OpenStack fonctionne.
|
|
||||||
net.ipv4.ip_forward = 1
|
|
||||||
43
docs/adr/0001-kolla-2025-2-sur-debian-12.md
Normal file
43
docs/adr/0001-kolla-2025-2-sur-debian-12.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# ADR 0001 — Kolla-Ansible 2025.2 sur Debian 12, sans HAProxy ni Cinder
|
||||||
|
|
||||||
|
- **Date** : 2026-10-07
|
||||||
|
- **Statut** : accepté
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
Le serveur Syllabus (Dedibox Start-2-L) est installé en Debian 12 (bookworm),
|
||||||
|
avec une seule IP publique et deux SSD entièrement utilisés par un RAID 1
|
||||||
|
logiciel pour `/`. Il faut un OpenStack tout-en-un, maintenu, dont aucune API
|
||||||
|
n'est exposée sur l'IP publique.
|
||||||
|
|
||||||
|
## Décision
|
||||||
|
|
||||||
|
1. **Kolla-Ansible série 2025.2 (Flamingo).** C'est la plus récente qui
|
||||||
|
supporte encore Debian 12 comme hôte : 2026.1 ne supporte plus que
|
||||||
|
Debian 13. 2025.1 n'est plus maintenue depuis le 2 octobre 2026, alors
|
||||||
|
que 2025.2 l'est jusqu'en avril 2027 (fin de vie estimée).
|
||||||
|
Sources : support matrix 2025.2 et 2026.1, releases.openstack.org.
|
||||||
|
2. **Images `debian` (`2025.2-debian-bookworm`)**, cohérentes avec l'hôte.
|
||||||
|
3. **Pas de HAProxy ni de keepalived** : un seul nœud, donc aucune VIP à faire
|
||||||
|
flotter. Toutes les API écoutent sur `dummy0` (10.10.0.1).
|
||||||
|
4. **Neutron OVN**, réseau externe sur une paire veth NATée (étape 4), jamais
|
||||||
|
sur `eno1`.
|
||||||
|
5. **Pas de Cinder pour l'instant.** Il n'y a aucun espace disque libre pour
|
||||||
|
un groupe de volumes LVM. Une alternative (fichier en loopback sur `/`)
|
||||||
|
serait fragile et lente pour un gain nul : les labs n'ont besoin que de
|
||||||
|
disques éphémères Nova.
|
||||||
|
6. **Kolla ne gère pas le pare-feu.** Il est écrit dans le rôle Ansible
|
||||||
|
`durcissement`, et Docker est configuré pour ne créer aucune règle.
|
||||||
|
|
||||||
|
## Conséquences
|
||||||
|
|
||||||
|
- Il faudra passer à Debian 13 pour suivre les séries suivantes (2026.1 et
|
||||||
|
au-delà) : c'est un sujet de la montée de version (semaine 7 du bloc A),
|
||||||
|
à prévoir avant avril 2027.
|
||||||
|
- Kolla est installé depuis la branche `stable/2025.2` (version
|
||||||
|
`21.3.1.dev4` au moment de l'installation), comme le recommande la
|
||||||
|
documentation. Pour une reproductibilité stricte, il faudra figer un tag
|
||||||
|
de version.
|
||||||
|
- Pas de volumes persistants pour les VM tant que Cinder (ou Ceph, bloc C)
|
||||||
|
n'est pas en place. Les travaux des élèves devront donc être sauvegardés
|
||||||
|
ailleurs (S3, bloc B).
|
||||||
|
|
@ -149,3 +149,43 @@ OpenStack a besoin de deux réseaux en plus de l'accès public : un réseau inte
|
||||||
**Suite**
|
**Suite**
|
||||||
|
|
||||||
Étape 5 : Kolla-Ansible 2025.2 tout-en-un. `bootstrap-servers` peut toucher au pare-feu et à Docker : vérifier avant, rejouer `durcissement` après, et demander l'accord d'Adam pour ce qui touche au pare-feu.
|
Étape 5 : Kolla-Ansible 2025.2 tout-en-un. `bootstrap-servers` peut toucher au pare-feu et à Docker : vérifier avant, rejouer `durcissement` après, et demander l'accord d'Adam pour ce qui touche au pare-feu.
|
||||||
|
|
||||||
|
## 2026-10-07 — Étape 5 : OpenStack avec Kolla-Ansible 2025.2
|
||||||
|
|
||||||
|
**Fait**
|
||||||
|
|
||||||
|
- Rôle Ansible `kolla` + playbook `ansible/kolla.yml` : dépendances système, venv `/opt/kolla-venv` (Kolla-Ansible `stable/2025.2`, version `21.3.1.dev4`, ansible-core 2.19, client `openstack` 8.2.0, SDK `docker` et `dbus-python`), `/etc/kolla/globals.yml` et `all-in-one` copiés depuis le dépôt (`kolla/`), `passwords.yml` généré par `kolla-genpwd` **sur le serveur uniquement** (`600 root:root`, jamais dans Git), `install-deps`.
|
||||||
|
- `kolla/globals.yml` : images Debian bookworm (tag vérifié sur quay.io), API sur `dummy0`, réseau externe `veth-ext-ovs`, OVN, sans HAProxy, keepalived, ProxySQL, Horizon ni Cinder ; avec Heat, console série, KVM, Prometheus, Grafana. `disable_firewall: false`. Docker sans iptables ni ip6tables.
|
||||||
|
- Avant de lancer `bootstrap-servers`, j'ai lu son code installé localement pour savoir s'il touchait au pare-feu. Sur Debian, il ne fait qu'essayer de désactiver `ufw` (absent) et ne touche ni à nftables ni à l'heure.
|
||||||
|
- `bootstrap-servers`, `prechecks`, `deploy` (lancé comme service `systemd-run` pour survivre à une coupure SSH, 22 min), `post-deploy`.
|
||||||
|
- ADR `docs/adr/0001-kolla-2025-2-sur-debian-12.md`, runbook `docs/runbooks/openstack.md`.
|
||||||
|
- Correction fail2ban validée par Adam à l'étape 4 : le handler `recharger nftables` relance aussi fail2ban (handler `listen`), et une option `-e durcissement_forcer_rechargement=true` force un rechargement du pare-feu.
|
||||||
|
|
||||||
|
**Problèmes rencontrés et solution**
|
||||||
|
|
||||||
|
1. `install-deps` : `No such file or directory: 'ansible-galaxy'` → le `bin` du venv doit être dans le `PATH`.
|
||||||
|
2. **`bootstrap-servers` a modifié le pare-feu** (arrêt et accord d'Adam). Docker 29 a créé des tables `ip6 nat` et `ip6 filter` malgré `iptables: false` : depuis Docker 27, l'IPv6 a son propre réglage. Aucun impact sur la sécurité, car notre chaîne `forward` en `drop` l'emporte. Correction : `docker_custom_config: {ip6tables: false}`, puis un rechargement forcé du pare-feu sous filet anti-coupure. J'ai vérifié qu'un redémarrage de Docker ne recrée plus les tables.
|
||||||
|
3. `prechecks` : `No module named 'docker'` → Kolla utilise le Python du venv ; `docker` et `dbus-python` ajoutés au venv.
|
||||||
|
4. **1er `deploy` en échec** : MariaDB `Bind on TCP/IP port. Got error: 98: Address already in use`. ProxySQL écoute sur la VIP:3306, et sans HAProxy la VIP est l'IP du nœud, donc il occupait le port de MariaDB. Correction : `enable_proxysql: "no"`. Le conteneur et le volume `proxysql` ont été supprimés avec l'accord d'Adam. Le volume `proxysql_socket` est encore présent (non validé, à supprimer avec son accord). Au 2ᵉ `deploy`, MariaDB a démarré sans qu'il faille réinitialiser son volume.
|
||||||
|
|
||||||
|
**Critère vérifié**
|
||||||
|
|
||||||
|
- `openstack service list` : keystone, glance, nova, neutron, placement, heat, heat-cfn.
|
||||||
|
- `openstack compute service list` : nova-scheduler, nova-conductor, nova-compute `up`. Agents OVN (Controller Gateway, Metadata) vivants.
|
||||||
|
- `nmap` depuis le Mac sur les ports OpenStack (5000, 8774, 8775, 8778, 9292, 9696, 6080-6083, 3000, 9090, 9091, 9093, 9100, 3306, 5672, 15672, 11211, 6641, 6642, 16509…) + 1-1024 : **seul 22 est ouvert**.
|
||||||
|
- Pare-feu identique à la référence ; seule `f2b-table` (fail2ban) en plus.
|
||||||
|
- Correction fail2ban testée : bannissement de l'adresse de test `192.0.2.10` (plage réservée à la documentation), rechargement forcé du pare-feu ; `f2b-table` recréée et le bannissement toujours en place. Adresse débannie ensuite.
|
||||||
|
- 46 conteneurs ; RAM utilisée 11 Gio sur 31 (19 Gio disponibles) avant toute VM.
|
||||||
|
|
||||||
|
**Dettes notées**
|
||||||
|
|
||||||
|
- Les bases OVN (`ovsdb-server`, 6641/6642) écoutent sur `0.0.0.0`. Le pare-feu les bloque, mais il faudrait les restreindre à `10.10.0.1` (défense en profondeur).
|
||||||
|
- Kolla est installé depuis une branche, pas un tag : figer la version pour la reproductibilité (ADR 0001).
|
||||||
|
|
||||||
|
**Comprendre**
|
||||||
|
|
||||||
|
Kolla-Ansible déploie OpenStack sous forme de conteneurs Docker : chaque service (Keystone, Nova, Neutron…) tourne dans son propre conteneur, configuré par Ansible à partir d'un seul fichier, `globals.yml`. Les deux incidents de cette étape viennent de valeurs par défaut prévues pour un vrai cluster de plusieurs serveurs. Docker crée des règles de pare-feu IPv6 pour ses réseaux, et ProxySQL suppose une adresse virtuelle distincte de celle du serveur. Sur un seul nœud, ces mécanismes ne servent à rien et se gênent entre eux. La leçon : lire le code de l'outil avant de le lancer, et comparer le pare-feu avant et après, plutôt que de faire confiance aux options. C'est ce qui a permis de repérer les tables Docker en quelques secondes.
|
||||||
|
|
||||||
|
**Suite**
|
||||||
|
|
||||||
|
Étape 6 : projet `paillasse`, utilisateur de service avec application credentials, image `paillasse-debian` (virt-customize), flavor `eleve.petit`, première VM et console série par WebSocket.
|
||||||
|
|
|
||||||
88
docs/runbooks/openstack.md
Normal file
88
docs/runbooks/openstack.md
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
# Runbook — OpenStack (Kolla-Ansible 2025.2, tout-en-un)
|
||||||
|
|
||||||
|
## Où sont les choses
|
||||||
|
|
||||||
|
| Élément | Emplacement |
|
||||||
|
|---|---|
|
||||||
|
| venv Kolla-Ansible + client `openstack` | `/opt/kolla-venv` (liens dans `/usr/local/bin`) |
|
||||||
|
| Configuration | `/etc/kolla/globals.yml` (copie de `kolla/globals.yml` du dépôt) |
|
||||||
|
| Inventaire | `/etc/kolla/all-in-one` (copie de `kolla/all-in-one`) |
|
||||||
|
| Mots de passe | `/etc/kolla/passwords.yml` — **serveur uniquement**, `600 root:root`, jamais dans Git |
|
||||||
|
| Accès admin | `/etc/kolla/clouds.yaml`, `/etc/kolla/admin-openrc.sh` (générés par `post-deploy`) |
|
||||||
|
| Collections Ansible de Kolla | `/root/.ansible/collections/` (installées par `install-deps`) |
|
||||||
|
| Journaux des déploiements | `/var/log/kolla-*.log` |
|
||||||
|
|
||||||
|
Tout ce qui précède (sauf les mots de passe et les fichiers générés) est
|
||||||
|
préparé par le playbook `ansible/kolla.yml` depuis le Mac :
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ansible && script -q /dev/null ansible-playbook kolla.yml -i inventory.ini
|
||||||
|
```
|
||||||
|
|
||||||
|
## Choix de configuration (résumé de `kolla/globals.yml`)
|
||||||
|
|
||||||
|
- Images `debian` (tag `2025.2-debian-bookworm`).
|
||||||
|
- Toutes les API sur `dummy0` (10.10.0.1), jamais sur `eno1`. Pas de HAProxy ni keepalived (un seul nœud).
|
||||||
|
- Réseau externe Neutron : `veth-ext-ovs` (paire veth de l'étape 4), OVN.
|
||||||
|
- Heat, console série (`nova-serialproxy`), KVM, Prometheus, Grafana activés. Horizon désactivé.
|
||||||
|
- Cinder désactivé : pas de place pour un groupe de volumes LVM (disques entièrement en RAID 1).
|
||||||
|
- `disable_firewall: false` et Docker en `iptables: false`, `ip6tables: false`, `bridge: none`, `ip-forward: false` : **ni Kolla ni Docker ne touchent au pare-feu**, géré uniquement par le rôle `durcissement`.
|
||||||
|
|
||||||
|
## Déployer / redéployer
|
||||||
|
|
||||||
|
Sur le serveur, en root :
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo -i
|
||||||
|
export PATH=/opt/kolla-venv/bin:$PATH
|
||||||
|
cd /etc/kolla
|
||||||
|
kolla-ansible bootstrap-servers -i all-in-one # installe Docker, /etc/hosts…
|
||||||
|
kolla-ansible prechecks -i all-in-one
|
||||||
|
kolla-ansible deploy -i all-in-one # 20 à 60 min la première fois
|
||||||
|
kolla-ansible post-deploy -i all-in-one # génère clouds.yaml et admin-openrc.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour un `deploy` long, le lancer comme service pour survivre à une coupure SSH :
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo systemd-run --unit=kolla-deploy \
|
||||||
|
--setenv=PATH=/opt/kolla-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
|
||||||
|
--setenv=HOME=/root --working-directory=/etc/kolla \
|
||||||
|
bash -c 'kolla-ansible deploy -i /etc/kolla/all-in-one > /var/log/kolla-deploy.log 2>&1'
|
||||||
|
journalctl -fu kolla-deploy # ou : tail -f /var/log/kolla-deploy.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## Après chaque opération Kolla : vérifier le pare-feu
|
||||||
|
|
||||||
|
Kolla et Docker ne doivent créer aucune table nftables. Référence enregistrée
|
||||||
|
dans `/tmp/nft-reference.txt` (à refaire après un changement voulu) :
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo nft list tables # attendu : table inet filter, table ip nat
|
||||||
|
```
|
||||||
|
|
||||||
|
Si une table étrangère apparaît, comprendre d'où elle vient, puis recharger le
|
||||||
|
pare-feu depuis le Mac (sous filet anti-coupure) :
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ansible && script -q /dev/null ansible-playbook reseau-openstack.yml -i inventory.ini \
|
||||||
|
-e durcissement_forcer_rechargement=true
|
||||||
|
```
|
||||||
|
|
||||||
|
## Utiliser le client openstack
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo -i
|
||||||
|
export OS_CLOUD=kolla-admin
|
||||||
|
export OS_CLIENT_CONFIG_FILE=/etc/kolla/clouds.yaml
|
||||||
|
openstack service list
|
||||||
|
openstack compute service list
|
||||||
|
openstack network agent list
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pièges rencontrés
|
||||||
|
|
||||||
|
- `kolla-ansible install-deps` : `No such file or directory: 'ansible-galaxy'` si le `bin` du venv n'est pas dans le `PATH`.
|
||||||
|
- `prechecks` : `No module named 'docker'` — Kolla utilise le Python du venv, il faut `docker` et `dbus-python` **dans le venv** (fait par le rôle `kolla`).
|
||||||
|
- Docker 29 crée des tables `ip6 nat` / `ip6 filter` malgré `iptables: false` : ajouter `ip6tables: false` (`docker_custom_config` dans `globals.yml`).
|
||||||
|
- `kolla-genpwd` réécrit `passwords.yml` en `640` : le rôle remet `600`.
|
||||||
597
kolla/all-in-one
Normal file
597
kolla/all-in-one
Normal file
|
|
@ -0,0 +1,597 @@
|
||||||
|
# These initial groups are the only groups required to be modified. The
|
||||||
|
# additional groups are for more control of the environment.
|
||||||
|
[control]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[network]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[compute]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[storage]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[monitoring]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
[deployment]
|
||||||
|
localhost ansible_connection=local
|
||||||
|
|
||||||
|
# You can explicitly specify which hosts run each project by updating the
|
||||||
|
# groups in the sections below. Common services are grouped together.
|
||||||
|
|
||||||
|
[common:children]
|
||||||
|
control
|
||||||
|
network
|
||||||
|
compute
|
||||||
|
storage
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[collectd:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[baremetal:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[tls-backend:children]
|
||||||
|
control
|
||||||
|
network
|
||||||
|
|
||||||
|
[grafana:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[etcd:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[telegraf:children]
|
||||||
|
compute
|
||||||
|
control
|
||||||
|
monitoring
|
||||||
|
network
|
||||||
|
storage
|
||||||
|
|
||||||
|
[hacluster:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[hacluster-remote:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[loadbalancer:children]
|
||||||
|
network
|
||||||
|
|
||||||
|
[mariadb:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[rabbitmq:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[keystone:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[glance:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[nova:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[neutron:children]
|
||||||
|
network
|
||||||
|
|
||||||
|
[openvswitch:children]
|
||||||
|
network
|
||||||
|
compute
|
||||||
|
manila-share
|
||||||
|
|
||||||
|
[cinder:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[cloudkitty:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[memcached:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[horizon:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[barbican:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[heat:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[ironic:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[influxdb:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[prometheus:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[magnum:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[mistral:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[manila:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[gnocchi:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[ceilometer:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[aodh:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[cyborg:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[tacker:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[trove:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[watcher:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[octavia:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[designate:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[placement:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[bifrost:children]
|
||||||
|
deployment
|
||||||
|
|
||||||
|
[zun:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[skyline:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
# TODO(vurmil): Remove after G/2026.1 release as Redis migration is no longer required
|
||||||
|
[redis:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[valkey:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[blazar:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[letsencrypt:children]
|
||||||
|
loadbalancer
|
||||||
|
|
||||||
|
# Additional control implemented here. These groups allow you to control which
|
||||||
|
# services run on which hosts at a per-service level.
|
||||||
|
#
|
||||||
|
# Word of caution: Some services are required to run on the same host to
|
||||||
|
# function appropriately. For example, neutron-metadata-agent must run on the
|
||||||
|
# same host as the l3-agent and (depending on configuration) the dhcp-agent.
|
||||||
|
|
||||||
|
# Common
|
||||||
|
[cron:children]
|
||||||
|
common
|
||||||
|
|
||||||
|
[fluentd:children]
|
||||||
|
common
|
||||||
|
|
||||||
|
[kolla-logs:children]
|
||||||
|
common
|
||||||
|
|
||||||
|
[kolla-toolbox:children]
|
||||||
|
common
|
||||||
|
|
||||||
|
[opensearch:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
# Opensearch dashboards
|
||||||
|
[opensearch-dashboards:children]
|
||||||
|
opensearch
|
||||||
|
|
||||||
|
# Glance
|
||||||
|
[glance-api:children]
|
||||||
|
glance
|
||||||
|
|
||||||
|
# Nova
|
||||||
|
[nova-api:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-conductor:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-metadata:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-super-conductor:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-novncproxy:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-scheduler:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-spicehtml5proxy:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-compute-ironic:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
[nova-serialproxy:children]
|
||||||
|
nova
|
||||||
|
|
||||||
|
# Neutron
|
||||||
|
[ironic-neutron-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-bgp-dragent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-dhcp-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-infoblox-ipam-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-l3-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-metadata-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-metering-agent:children]
|
||||||
|
neutron
|
||||||
|
|
||||||
|
[neutron-periodic-worker:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[neutron-rpc-server:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[neutron-server:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[neutron-ovn-agent:children]
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
|
||||||
|
[neutron-ovn-maintenance-worker:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[neutron-ovn-metadata-agent:children]
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
|
||||||
|
# Cinder
|
||||||
|
[cinder-api:children]
|
||||||
|
cinder
|
||||||
|
|
||||||
|
[cinder-backup:children]
|
||||||
|
storage
|
||||||
|
|
||||||
|
[cinder-scheduler:children]
|
||||||
|
cinder
|
||||||
|
|
||||||
|
[cinder-volume:children]
|
||||||
|
storage
|
||||||
|
|
||||||
|
# Cloudkitty
|
||||||
|
[cloudkitty-api:children]
|
||||||
|
cloudkitty
|
||||||
|
|
||||||
|
[cloudkitty-processor:children]
|
||||||
|
cloudkitty
|
||||||
|
|
||||||
|
# iSCSI
|
||||||
|
[iscsid:children]
|
||||||
|
compute
|
||||||
|
storage
|
||||||
|
ironic
|
||||||
|
|
||||||
|
[tgtd:children]
|
||||||
|
storage
|
||||||
|
|
||||||
|
# Manila
|
||||||
|
[manila-api:children]
|
||||||
|
manila
|
||||||
|
|
||||||
|
[manila-scheduler:children]
|
||||||
|
manila
|
||||||
|
|
||||||
|
[manila-share:children]
|
||||||
|
network
|
||||||
|
|
||||||
|
[manila-data:children]
|
||||||
|
manila
|
||||||
|
|
||||||
|
# Barbican
|
||||||
|
[barbican-api:children]
|
||||||
|
barbican
|
||||||
|
|
||||||
|
[barbican-keystone-listener:children]
|
||||||
|
barbican
|
||||||
|
|
||||||
|
[barbican-worker:children]
|
||||||
|
barbican
|
||||||
|
|
||||||
|
# Trove
|
||||||
|
[trove-api:children]
|
||||||
|
trove
|
||||||
|
|
||||||
|
[trove-conductor:children]
|
||||||
|
trove
|
||||||
|
|
||||||
|
[trove-taskmanager:children]
|
||||||
|
trove
|
||||||
|
|
||||||
|
# Heat
|
||||||
|
[heat-api:children]
|
||||||
|
heat
|
||||||
|
|
||||||
|
[heat-api-cfn:children]
|
||||||
|
heat
|
||||||
|
|
||||||
|
[heat-engine:children]
|
||||||
|
heat
|
||||||
|
|
||||||
|
# Ironic
|
||||||
|
[ironic-api:children]
|
||||||
|
ironic
|
||||||
|
|
||||||
|
[ironic-conductor:children]
|
||||||
|
ironic
|
||||||
|
|
||||||
|
[ironic-dnsmasq:children]
|
||||||
|
ironic
|
||||||
|
|
||||||
|
[ironic-tftp:children]
|
||||||
|
ironic
|
||||||
|
|
||||||
|
[ironic-http:children]
|
||||||
|
ironic
|
||||||
|
|
||||||
|
# Magnum
|
||||||
|
[magnum-api:children]
|
||||||
|
magnum
|
||||||
|
|
||||||
|
[magnum-conductor:children]
|
||||||
|
magnum
|
||||||
|
|
||||||
|
# Mistral
|
||||||
|
[mistral-api:children]
|
||||||
|
mistral
|
||||||
|
|
||||||
|
[mistral-executor:children]
|
||||||
|
mistral
|
||||||
|
|
||||||
|
[mistral-engine:children]
|
||||||
|
mistral
|
||||||
|
|
||||||
|
[mistral-event-engine:children]
|
||||||
|
mistral
|
||||||
|
|
||||||
|
# Aodh
|
||||||
|
[aodh-api:children]
|
||||||
|
aodh
|
||||||
|
|
||||||
|
[aodh-evaluator:children]
|
||||||
|
aodh
|
||||||
|
|
||||||
|
[aodh-listener:children]
|
||||||
|
aodh
|
||||||
|
|
||||||
|
[aodh-notifier:children]
|
||||||
|
aodh
|
||||||
|
|
||||||
|
# Cyborg
|
||||||
|
[cyborg-api:children]
|
||||||
|
cyborg
|
||||||
|
|
||||||
|
[cyborg-agent:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[cyborg-conductor:children]
|
||||||
|
cyborg
|
||||||
|
|
||||||
|
# Gnocchi
|
||||||
|
[gnocchi-api:children]
|
||||||
|
gnocchi
|
||||||
|
|
||||||
|
[gnocchi-statsd:children]
|
||||||
|
gnocchi
|
||||||
|
|
||||||
|
[gnocchi-metricd:children]
|
||||||
|
gnocchi
|
||||||
|
|
||||||
|
# Ceilometer
|
||||||
|
[ceilometer-central:children]
|
||||||
|
ceilometer
|
||||||
|
|
||||||
|
[ceilometer-notification:children]
|
||||||
|
ceilometer
|
||||||
|
|
||||||
|
[ceilometer-compute:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[ceilometer-ipmi:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
# Multipathd
|
||||||
|
[multipathd:children]
|
||||||
|
compute
|
||||||
|
storage
|
||||||
|
|
||||||
|
# Watcher
|
||||||
|
[watcher-api:children]
|
||||||
|
watcher
|
||||||
|
|
||||||
|
[watcher-engine:children]
|
||||||
|
watcher
|
||||||
|
|
||||||
|
[watcher-applier:children]
|
||||||
|
watcher
|
||||||
|
|
||||||
|
# Octavia
|
||||||
|
[octavia-api:children]
|
||||||
|
octavia
|
||||||
|
|
||||||
|
[octavia-driver-agent:children]
|
||||||
|
octavia
|
||||||
|
|
||||||
|
[octavia-health-manager:children]
|
||||||
|
octavia
|
||||||
|
|
||||||
|
[octavia-housekeeping:children]
|
||||||
|
octavia
|
||||||
|
|
||||||
|
[octavia-worker:children]
|
||||||
|
octavia
|
||||||
|
|
||||||
|
# Designate
|
||||||
|
[designate-api:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
[designate-central:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
[designate-producer:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
[designate-mdns:children]
|
||||||
|
network
|
||||||
|
|
||||||
|
[designate-worker:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
[designate-sink:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
[designate-backend-bind9:children]
|
||||||
|
designate
|
||||||
|
|
||||||
|
# Placement
|
||||||
|
[placement-api:children]
|
||||||
|
placement
|
||||||
|
|
||||||
|
# Zun
|
||||||
|
[zun-api:children]
|
||||||
|
zun
|
||||||
|
|
||||||
|
[zun-wsproxy:children]
|
||||||
|
zun
|
||||||
|
|
||||||
|
[zun-compute:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[zun-cni-daemon:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
# Skyline
|
||||||
|
[skyline-apiserver:children]
|
||||||
|
skyline
|
||||||
|
|
||||||
|
[skyline-console:children]
|
||||||
|
skyline
|
||||||
|
|
||||||
|
# Tacker
|
||||||
|
[tacker-server:children]
|
||||||
|
tacker
|
||||||
|
|
||||||
|
[tacker-conductor:children]
|
||||||
|
tacker
|
||||||
|
|
||||||
|
# Blazar
|
||||||
|
[blazar-api:children]
|
||||||
|
blazar
|
||||||
|
|
||||||
|
[blazar-manager:children]
|
||||||
|
blazar
|
||||||
|
|
||||||
|
# Prometheus
|
||||||
|
[prometheus-node-exporter:children]
|
||||||
|
monitoring
|
||||||
|
control
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
storage
|
||||||
|
|
||||||
|
[prometheus-mysqld-exporter:children]
|
||||||
|
mariadb
|
||||||
|
|
||||||
|
[prometheus-memcached-exporter:children]
|
||||||
|
memcached
|
||||||
|
|
||||||
|
[prometheus-cadvisor:children]
|
||||||
|
monitoring
|
||||||
|
control
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
storage
|
||||||
|
|
||||||
|
[prometheus-alertmanager:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[prometheus-openstack-exporter:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[prometheus-elasticsearch-exporter:children]
|
||||||
|
opensearch
|
||||||
|
|
||||||
|
[prometheus-blackbox-exporter:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
|
[prometheus-libvirt-exporter:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[masakari-api:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[masakari-engine:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[masakari-hostmonitor:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[masakari-instancemonitor:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[ovn-controller:children]
|
||||||
|
ovn-controller-compute
|
||||||
|
ovn-controller-network
|
||||||
|
|
||||||
|
[ovn-controller-compute:children]
|
||||||
|
compute
|
||||||
|
|
||||||
|
[ovn-controller-network:children]
|
||||||
|
network
|
||||||
|
|
||||||
|
[ovn-database:children]
|
||||||
|
control
|
||||||
|
|
||||||
|
[ovn-northd:children]
|
||||||
|
ovn-database
|
||||||
|
|
||||||
|
[ovn-nb-db:children]
|
||||||
|
ovn-database
|
||||||
|
|
||||||
|
[ovn-sb-db:children]
|
||||||
|
ovn-database
|
||||||
|
|
||||||
|
[ovn-sb-db-relay:children]
|
||||||
|
ovn-database
|
||||||
|
|
||||||
|
[letsencrypt-webserver:children]
|
||||||
|
letsencrypt
|
||||||
|
|
||||||
|
[letsencrypt-lego:children]
|
||||||
|
letsencrypt
|
||||||
53
kolla/globals.yml
Normal file
53
kolla/globals.yml
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
---
|
||||||
|
# Configuration Kolla-Ansible 2025.2 (Flamingo) — Syllabus, serveur tout-en-un.
|
||||||
|
# Noms d'options vérifiés dans etc/kolla/globals.yml de la branche stable/2025.2.
|
||||||
|
# Aucun secret ici : les mots de passe sont dans /etc/kolla/passwords.yml,
|
||||||
|
# uniquement sur le serveur (chmod 600, jamais dans Git).
|
||||||
|
|
||||||
|
workaround_ansible_issue_8743: yes
|
||||||
|
|
||||||
|
# Images : Debian bookworm (tag quay.io « 2025.2-debian-bookworm », vérifié).
|
||||||
|
kolla_base_distro: "debian"
|
||||||
|
openstack_release: "2025.2"
|
||||||
|
|
||||||
|
# Réseau (voir étape 4 et docs/journal.md) :
|
||||||
|
# - dummy0 (10.10.0.1) porte toutes les API et services internes : rien sur eno1.
|
||||||
|
# - veth-ext-ovs est le bout de la paire veth donné à Neutron comme réseau externe.
|
||||||
|
network_interface: "dummy0"
|
||||||
|
neutron_external_interface: "veth-ext-ovs"
|
||||||
|
kolla_internal_vip_address: "10.10.0.1"
|
||||||
|
|
||||||
|
# Un seul nœud : pas de VIP flottante, donc ni HAProxy ni keepalived.
|
||||||
|
enable_haproxy: "no"
|
||||||
|
enable_keepalived: "no"
|
||||||
|
# ProxySQL écoute sur la VIP:3306. Sans HAProxy, la VIP est l'IP du nœud :
|
||||||
|
# il prenait le port de MariaDB (« Address already in use », 2026-10-07).
|
||||||
|
enable_proxysql: "no"
|
||||||
|
|
||||||
|
# Neutron avec OVN (choix de CLAUDE.md, section 3).
|
||||||
|
neutron_plugin_agent: "ovn"
|
||||||
|
|
||||||
|
# Services.
|
||||||
|
enable_horizon: "no" # pas d'interface web OpenStack : le portail Syllabus la remplace
|
||||||
|
enable_heat: "yes" # chaque lab est un modèle Heat
|
||||||
|
enable_nova_serialconsole_proxy: "yes" # console élève (nova-serialproxy)
|
||||||
|
nova_compute_virt_type: "kvm" # VT-x vérifié à l'étape 1
|
||||||
|
enable_prometheus: "yes" # supervision (étape 7)
|
||||||
|
enable_grafana: "yes"
|
||||||
|
|
||||||
|
# Cinder désactivé pour l'instant : les deux disques sont entièrement pris par
|
||||||
|
# le RAID 1 (/), il n'y a pas de place pour un groupe de volumes LVM dédié.
|
||||||
|
# Les VM élèves utilisent des disques éphémères Nova. À revoir (Ceph, bloc C).
|
||||||
|
enable_cinder: "no"
|
||||||
|
|
||||||
|
# Kolla ne doit pas toucher au pare-feu : il est géré par le rôle Ansible
|
||||||
|
# `durcissement` (nftables). Sur Debian, cette option ne ferait qu'essayer de
|
||||||
|
# désactiver ufw (absent ici), mais on la fixe explicitement.
|
||||||
|
disable_firewall: false
|
||||||
|
|
||||||
|
# Docker (installé par bootstrap-servers) : Kolla fixe déjà iptables: false,
|
||||||
|
# mais depuis Docker 27 l'IPv6 a son propre réglage, activé par défaut. Sans
|
||||||
|
# cette ligne, Docker crée des tables « ip6 nat » et « ip6 filter » dans
|
||||||
|
# nftables (constaté le 2026-10-07). Fusionné dans /etc/docker/daemon.json.
|
||||||
|
docker_custom_config:
|
||||||
|
ip6tables: false
|
||||||
Loading…
Add table
Add a link
Reference in a new issue