Paillasse/ansible/roles/kolla/tasks/main.yml

185 lines
5.9 KiB
YAML
Raw Permalink Normal View History

---
# É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]