La sauvegarde ne couvrait que /etc, /home et /root : la base MariaDB du portail et son .env (APP_KEY) en étaient absents. Ajoute aussi le réglage du quota et du gabarit du projet des labs dans Ansible, la reprise des VM au démarrage de l'hôte (Nova), et le script du test de capacité. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
149 lines
4.7 KiB
YAML
149 lines
4.7 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
|
|
|
|
- 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]
|