Aller au contenu

DevOps & Outils

Services d'orchestration et outils d'Infrastructure as Code pour OpenStack.


Heat

Heat est le service d'orchestration d'OpenStack. Il permet de définir une infrastructure complète (VMs, réseaux, volumes, load balancers) dans des templates declaratifs appelés HOT (Heat Orchestration Template), au format YAML.

Cas d'usage : déploiement d'environnements complets, autoscaling, infrastructure reproductible.

Comparaison

Heat est l'équivalent d'AWS CloudFormation ou des ARM Templates Azure pour OpenStack.

Exemple de template HOT

heat_template_version: 2021-04-16

description: Deploiement d'un serveur web

parameters:
  flavor:
    type: string
    default: m1.medium
  image:
    type: string
    default: ubuntu-22.04

resources:
  mon_reseau:
    type: OS::Neutron::Net

  mon_sous_reseau:
    type: OS::Neutron::Subnet
    properties:
      network: { get_resource: mon_reseau }
      cidr: 10.0.0.0/24

  mon_serveur:
    type: OS::Nova::Server
    properties:
      flavor: { get_param: flavor }
      image: { get_param: image }
      networks:
        - network: { get_resource: mon_reseau }

outputs:
  server_ip:
    value: { get_attr: [mon_serveur, first_address] }

Opérations courantes

# Creer une stack
openstack stack create ma-stack -t template.yaml

# Suivre le deploiement
openstack stack show ma-stack
openstack stack event list ma-stack

# Mettre a jour une stack
openstack stack update ma-stack -t template-v2.yaml

# Supprimer une stack (et toutes ses ressources)
openstack stack delete ma-stack

Autoscaling

Heat intégré l'autoscaling via les ressources OS::Heat::AutoScalingGroup et OS::Heat::ScalingPolicy, declenchees par les alarmes Aodh sur les métriques Ceilometer/Gnocchi.

Kolla

Kolla et Kolla-Ansible permettent de déployer OpenStack sous forme de conteneurs Docker. Chaque service OpenStack (Nova, Neutron, Keystone, etc.) s'exécuté dans son propre conteneur, simplifiant les mises à jour et la gestion des dépendances.

Cas d'usage : déploiement OpenStack en production, mises à jour simplifiées, environnements de test reproductibles.

Fonctionnement

Composant Rôle
Kolla Construction des images Docker pour chaque service
Kolla-Ansible Déploiement et configuration des conteneurs via Ansible
# Installer kolla-ansible
pip install kolla-ansible

# Generer la configuration
kolla-ansible install-deps
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla

# Deployer OpenStack
kolla-ansible -i inventory deploy

# Reconfigurer apres modification
kolla-ansible -i inventory reconfigure

Outils d'Infrastructure as Code

OpenStack s'intégré avec les principaux outils IaC pour automatiser la création et la gestion des ressources :

Tutoriels outils IaC

Pour apprendre a utiliser ces outils, consultez les tutoriels dédiés :

  • Packer — Création d'images machine reproductibles pour OpenStack
  • Ansible — Provisioning et configuration automatisee des instances
  • OpenTofu — Infrastructure as Code declarative (provider openstack)
Outil Usage OpenStack Provider/Plugin
Packer Créer des images pour Nova/Glance Plugin openstack
Ansible Configurer des instances, déployer des applications Collection openstack.cloud
OpenTofu Provisionner toute l'infrastructure OpenStack Provider openstack

Exemple Packer

source "openstack" "ubuntu" {
  image_name        = "ubuntu-custom"
  source_image_name = "ubuntu-22.04"
  flavor            = "m1.medium"
  ssh_username      = "ubuntu"
  networks          = ["mon-reseau-id"]
}

Exemple OpenTofu

provider "openstack" {
  cloud = "mon-cloud"  # Reference au clouds.yaml
}

resource "openstack_compute_instance_v2" "web" {
  name        = "web-server"
  flavor_name = "m1.medium"
  image_name  = "ubuntu-22.04"

  network {
    name = "mon-reseau"
  }
}