Paillasse/docs/runbooks/openstack.md
Adam Belkacemi db2842689a déploie OpenStack 2025.2 avec Kolla-Ansible (tout-en-un, API sur dummy0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 15:50:54 +02:00

3.8 KiB

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.