restreint l'écoute des bases OVN à l'interface interne, supprime le volume proxysql_socket résiduel
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
db2842689a
commit
21c9de6d10
3 changed files with 65 additions and 1 deletions
53
ansible/roles/kolla/tasks/corrections.yml
Normal file
53
ansible/roles/kolla/tasks/corrections.yml
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
---
|
||||||
|
# Corrections à des comportements par défaut de Kolla-Ansible non adaptés à un
|
||||||
|
# nœud unique, appliquées après le déploiement (voir docs/journal.md,
|
||||||
|
# étape 5 : correctifs ProxySQL, Docker ip6tables). Ignorées si OpenStack n'a
|
||||||
|
# pas encore été déployé (conteneurs OVN absents).
|
||||||
|
|
||||||
|
- name: vérifier que les bases OVN sont déployées
|
||||||
|
ansible.builtin.command: docker inspect ovn_nb_db
|
||||||
|
register: kolla_ovn_nb_db_existe
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
# Les bases OVN (ovn-nb-db, ovn-sb-db) sont codées en dur pour écouter sur
|
||||||
|
# 0.0.0.0:6641/6642 (ansible/roles/ovn-db/tasks/bootstrap-db.yml de Kolla,
|
||||||
|
# ligne « set-connection ptcp:{{ port }}:0.0.0.0 »), contrairement aux ports de
|
||||||
|
# cluster (6643/6644) qui respectent déjà api_interface_address (dummy0). Le
|
||||||
|
# pare-feu bloque ces ports depuis Internet, mais on les restreint quand même
|
||||||
|
# à l'interface interne (défense en profondeur).
|
||||||
|
- name: déterminer l'adresse interne (dummy0)
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
kolla_adresse_interne: "{{ (reseau_dummy_ip | default('10.10.0.1/24')).split('/')[0] }}"
|
||||||
|
|
||||||
|
- name: lire l'adresse d'écoute actuelle d'OVN NB
|
||||||
|
when: kolla_ovn_nb_db_existe.rc == 0
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: docker exec ovn_nb_db ovn-nbctl --db=unix:/run/ovn/ovnnb_db.sock get-connection
|
||||||
|
register: kolla_ovn_nb_connection
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: "restreindre OVN NB (6641) à l'adresse interne"
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: >
|
||||||
|
docker exec ovn_nb_db ovn-nbctl --db=unix:/run/ovn/ovnnb_db.sock
|
||||||
|
set-connection ptcp:6641:{{ kolla_adresse_interne }}
|
||||||
|
when:
|
||||||
|
- kolla_ovn_nb_db_existe.rc == 0
|
||||||
|
- "'0.0.0.0' in kolla_ovn_nb_connection.stdout"
|
||||||
|
|
||||||
|
- name: lire l'adresse d'écoute actuelle d'OVN SB
|
||||||
|
when: kolla_ovn_nb_db_existe.rc == 0
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: docker exec ovn_sb_db ovn-sbctl --db=unix:/run/ovn/ovnsb_db.sock get-connection
|
||||||
|
register: kolla_ovn_sb_connection
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: "restreindre OVN SB (6642) à l'adresse interne"
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: >
|
||||||
|
docker exec ovn_sb_db ovn-sbctl --db=unix:/run/ovn/ovnsb_db.sock
|
||||||
|
set-connection ptcp:6642:{{ kolla_adresse_interne }}
|
||||||
|
when:
|
||||||
|
- kolla_ovn_nb_db_existe.rc == 0
|
||||||
|
- "'0.0.0.0' in kolla_ovn_sb_connection.stdout"
|
||||||
|
|
@ -118,3 +118,7 @@
|
||||||
PATH: "{{ kolla_venv }}/bin:{{ ansible_env.PATH }}"
|
PATH: "{{ kolla_venv }}/bin:{{ ansible_env.PATH }}"
|
||||||
register: kolla_install_deps
|
register: kolla_install_deps
|
||||||
changed_when: "'Installing' in kolla_install_deps.stdout"
|
changed_when: "'Installing' in kolla_install_deps.stdout"
|
||||||
|
|
||||||
|
- name: appliquer les correctifs post-déploiement
|
||||||
|
ansible.builtin.import_tasks: corrections.yml
|
||||||
|
tags: [corrections]
|
||||||
|
|
|
||||||
|
|
@ -179,9 +179,16 @@ OpenStack a besoin de deux réseaux en plus de l'accès public : un réseau inte
|
||||||
|
|
||||||
**Dettes notées**
|
**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).
|
- ~~Les bases OVN (`ovsdb-server`, 6641/6642) écoutent sur `0.0.0.0`~~ corrigé le 2026-10-07 (voir plus bas).
|
||||||
- Kolla est installé depuis une branche, pas un tag : figer la version pour la reproductibilité (ADR 0001).
|
- Kolla est installé depuis une branche, pas un tag : figer la version pour la reproductibilité (ADR 0001).
|
||||||
|
|
||||||
|
**Correctifs du 2026-10-07 (suite), demandés par Adam**
|
||||||
|
|
||||||
|
- Volume Docker résiduel `proxysql_socket` supprimé (accord d'Adam), après `proxysql_socket` lui-même supprimé lors du correctif ProxySQL.
|
||||||
|
- **Écoute OVN restreinte à `10.10.0.1`.** Cause : `ansible/roles/ovn-db/tasks/bootstrap-db.yml` de Kolla fait `ovn-nbctl/ovn-sbctl set-connection ptcp:PORT:0.0.0.0` en dur à la création des bases, sans tenir compte de `api_interface`. Les ports de cluster (6643/6644) ne sont pas concernés : ils respectent déjà `api_interface_address`. Le pare-feu bloquait déjà ces ports depuis Internet (vérifié à l'étape 5), donc pas de faille réelle, mais la bonne pratique de défense en profondeur ne coûte rien à appliquer.
|
||||||
|
- Correctif codé dans `ansible/roles/kolla/tasks/corrections.yml` (idempotent : relit l'écoute actuelle avant de la changer, ignoré si OpenStack n'est pas encore déployé), importé à la fin de `ansible/roles/kolla/tasks/main.yml`, tag `corrections`.
|
||||||
|
- Vérifié : `ss -tlnp` montre les 4 ports OVN (6641-6644) sur `10.10.0.1` uniquement ; un second passage du playbook ne rapporte aucun changement (idempotence confirmée) ; les agents OVN et les services Nova restent `up` après coup.
|
||||||
|
|
||||||
**Comprendre**
|
**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.
|
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.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue