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>
184 lines
5.9 KiB
YAML
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]
|