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

88 lines
3.8 KiB
Markdown

# 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`.