89 lines
3.8 KiB
Markdown
89 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`.
|