Paillasse/ansible/roles/kolla/tasks/main.yml
Adam Belkacemi 0a5df89201 documente la capacité, la restauration et le redémarrage (étape 13)
Capacité mesurée sur 20 VM (docs/capacite.md), restauration complète du
portail réussie, retour automatique de tous les services après redémarrage.
Retire l'unité systemd orpheline de ProxySQL, rend fidèle au navigateur la
mesure du temps d'ouverture d'un lab (2,8 s), et regroupe la dette révélée.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:12:11 +02:00

184 lines
5.9 KiB
YAML

---
# É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: créer le dossier des surcharges nova
ansible.builtin.file:
path: "{{ kolla_config_dir }}/config/nova"
state: directory
owner: root
group: root
mode: "0750"
- name: déployer la surcharge de nova-compute (versionnée, sans secret)
ansible.builtin.copy:
src: "{{ playbook_dir }}/../kolla/config/nova/nova-compute.conf"
dest: "{{ kolla_config_dir }}/config/nova/nova-compute.conf"
owner: root
group: root
mode: "0640"
register: kolla_surcharge_nova
- name: rappeler de reconfigurer nova si la surcharge a changé
ansible.builtin.debug:
msg: >
Surcharge nova-compute modifiée : lancer
`kolla-ansible reconfigure -i {{ kolla_config_dir }}/all-in-one --tags nova`
sur le serveur (voir docs/runbooks/openstack.md).
when: kolla_surcharge_nova.changed
# Kolla ne retire pas l'unité systemd d'un service qu'on désactive ensuite
# dans globals.yml : proxysql (désactivé à l'étape 5) échouait à chaque
# démarrage et polluait `systemctl --failed`. Unité déplacée, pas supprimée.
- name: vérifier la présence d'unités Kolla de services désactivés
ansible.builtin.stat:
path: "/etc/systemd/system/kolla-{{ item }}-container.service"
loop: "{{ kolla_services_retires }}"
register: kolla_unites_retirees
- name: arrêter et désactiver ces unités
ansible.builtin.systemd:
name: "kolla-{{ item.item }}-container.service"
state: stopped
enabled: false
loop: "{{ kolla_unites_retirees.results }}"
when: item.stat.exists
failed_when: false
- name: créer le dossier des unités retirées
ansible.builtin.file:
path: /root/unites-retirees
state: directory
mode: "0700"
- name: déplacer ces unités hors de systemd
ansible.builtin.command:
cmd: "mv /etc/systemd/system/kolla-{{ item.item }}-container.service /root/unites-retirees/"
loop: "{{ kolla_unites_retirees.results }}"
when: item.stat.exists
register: kolla_unites_deplacees
- name: recharger systemd et oublier leurs échecs
ansible.builtin.shell: systemctl daemon-reload && systemctl reset-failed
when: kolla_unites_deplacees.changed
- 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"
- name: appliquer les correctifs post-déploiement
ansible.builtin.import_tasks: corrections.yml
tags: [corrections]