Paillasse/ansible/roles/kolla/tasks/main.yml
Adam Belkacemi 21c9de6d10 restreint l'écoute des bases OVN à l'interface interne, supprime le volume proxysql_socket résiduel
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-07 15:57:46 +02:00

124 lines
3.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: 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]