124 lines
3.9 KiB
YAML
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]
|