Skip to content

Installation Kolla-Ansible

Introduction

Cette section détaille l'installation de Kolla-Ansible sur le nœud de déploiement, incluant la création de l'environnement Python virtuel et l'installation des dépendances.

Prérequis

Points à apprendre

Connexion au nœud deploy

# Depuis l'hôte Hetzner
ssh ubuntu@deploy

# Ou directement
ssh ubuntu@10.0.0.5

Création de l'environnement virtuel

# Installer les dépendances système
sudo apt update
sudo apt install -y \
  python3 \
  python3-pip \
  python3-venv \
  python3-dev \
  libffi-dev \
  gcc \
  libssl-dev \
  git

# Créer le venv
python3 -m venv ~/kolla-venv

# Activer
source ~/kolla-venv/bin/activate

# Mettre à jour pip
pip install -U pip setuptools wheel

Installation de Kolla-Ansible

# Méthode 1 : Via pip (recommandé pour production)
pip install 'kolla-ansible==19.*'

# Méthode 2 : Version spécifique
pip install 'kolla-ansible==19.0.0'

# Méthode 3 : Depuis Git (dernières corrections)
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2025.2

Installation des dépendances Ansible

# Ansible core
pip install 'ansible-core>=2.16,<2.18'

# Modules additionnels
pip install docker

# Installer les collections requises
kolla-ansible install-deps

# Vérifier les collections
ansible-galaxy collection list

Vérification de l'installation

# Version Kolla-Ansible
kolla-ansible --version

# Version Ansible
ansible --version

# Localisation des fichiers
pip show kolla-ansible | grep Location

Copie des fichiers de configuration

# Créer le répertoire Kolla
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla

# Copier les fichiers exemple
cp -r ~/kolla-venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/

# Structure créée
ls -la /etc/kolla/
# globals.yml
# passwords.yml
# ... autres fichiers

Copie des inventaires

# Copier les templates d'inventaire
cp ~/kolla-venv/share/kolla-ansible/ansible/inventory/all-in-one ~/
cp ~/kolla-venv/share/kolla-ansible/ansible/inventory/multinode ~/

# Pour notre lab HA, on utilisera multinode

Génération des mots de passe

# Générer tous les mots de passe aléatoires
kolla-genpwd

# Vérifier
head -20 /etc/kolla/passwords.yml

# Important : Sauvegarder ce fichier !
cp /etc/kolla/passwords.yml ~/passwords.yml.backup

Configuration d'Ansible

# Créer ansible.cfg pour optimiser les performances
cat > ~/ansible.cfg << 'EOF'
[defaults]
host_key_checking = False
pipelining = True
forks = 50
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_facts
fact_caching_timeout = 86400
retry_files_enabled = False
remote_user = ubuntu

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null
pipelining = True

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
EOF

Structure finale

# Vérifier la structure
tree -L 2 ~
# /home/ubuntu/
# ├── kolla-venv/
# │   ├── bin/
# │   ├── lib/
# │   └── share/
# ├── multinode           # Inventaire
# ├── all-in-one          # Inventaire (non utilisé)
# ├── ansible.cfg         # Config Ansible
# └── passwords.yml.backup

tree -L 1 /etc/kolla/
# /etc/kolla/
# ├── globals.yml
# ├── passwords.yml
# └── ... autres fichiers

Script d'installation automatique

#!/bin/bash
# install-kolla.sh - Script d'installation complète

set -e

echo "=== Installation Kolla-Ansible ==="

# Dépendances système
sudo apt update
sudo apt install -y python3 python3-pip python3-venv python3-dev \
  libffi-dev gcc libssl-dev git

# Création venv
echo "Création environnement virtuel..."
python3 -m venv ~/kolla-venv
source ~/kolla-venv/bin/activate

# Installation
echo "Installation Kolla-Ansible..."
pip install -U pip setuptools wheel
pip install 'kolla-ansible==19.*'
pip install 'ansible-core>=2.16,<2.18'
pip install docker

# Collections Ansible
echo "Installation collections Ansible..."
kolla-ansible install-deps

# Configuration
echo "Configuration..."
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -r ~/kolla-venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
cp ~/kolla-venv/share/kolla-ansible/ansible/inventory/multinode ~/

# Mots de passe
echo "Génération des mots de passe..."
kolla-genpwd
cp /etc/kolla/passwords.yml ~/passwords.yml.backup

# Ansible config
cat > ~/ansible.cfg << 'EOF'
[defaults]
host_key_checking = False
pipelining = True
forks = 50

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s

[privilege_escalation]
become = True
EOF

echo "=== Installation terminée ==="
echo "Versions installées:"
kolla-ansible --version
ansible --version | head -1

Alias utiles dans .bashrc

cat >> ~/.bashrc << 'EOF'

# Kolla-Ansible
alias ka='source ~/kolla-venv/bin/activate'
alias kolla='kolla-ansible -i ~/multinode'

# Raccourcis commandes fréquentes
kolla-bootstrap() { kolla-ansible -i ~/multinode bootstrap-servers "$@"; }
kolla-prechecks() { kolla-ansible -i ~/multinode prechecks "$@"; }
kolla-deploy() { kolla-ansible -i ~/multinode deploy "$@"; }
kolla-reconfigure() { kolla-ansible -i ~/multinode reconfigure "$@"; }
kolla-post() { kolla-ansible -i ~/multinode post-deploy "$@"; }
EOF

source ~/.bashrc

Exemples pratiques

Test de l'installation

# Activer l'environnement
source ~/kolla-venv/bin/activate

# Vérifier que tout fonctionne
kolla-ansible --help

# Lister les tags disponibles
kolla-ansible -i ~/multinode deploy --list-tags | head -20

Vérifier les images Docker disponibles

# Images Kolla sur quay.io
curl -s https://quay.io/api/v1/repository?namespace=openstack.kolla | \
  jq -r '.repositories[].name' | head -20

# Vérifier une image spécifique
docker pull quay.io/openstack.kolla/nova-api:2025.2-ubuntu-noble
docker images | grep kolla

Ressources

Checkpoint

  • Environnement virtuel Python créé
  • Kolla-Ansible installé (version 19.x)
  • Collections Ansible installées
  • Fichiers de configuration copiés dans /etc/kolla/
  • Mots de passe générés et sauvegardés
  • ansible.cfg configuré
  • Commande kolla-ansible --help fonctionne