M211 - Implémenter un environnement Cloud
avec une solution libre
Introduction à
Openstack
Institut Mines-Télécom
Objectifs
Connaitre le fonctionnement du projet OpenStack
et ses possibilités
Comprendre le fonctionnement de chacun des
composants d’OpenStack
2 ID Cloud Computing Introduction à Openstack
Sommaire de module
Mettre en service OpenStack
Explorer les services de base d’OpenStack
Explorer les services avancés d’OpenStack
Déployer des services d’OpenStack
3 ID Cloud Computing Introduction à Openstack
Plan
Introduction à Openstack
Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
4 ID Cloud Computing Introduction à Openstack
Introduction
5 ID Cloud Computing Introduction à Openstack
Les produits de cloud propriétaires
Introduction à
Openstack
ID Cloud Computing 9
Les produits de cloud propriétaires
Introduction à
Openstack
ID Cloud Computing 9
► Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
8 ID Cloud Computing Introduction à Openstack
Définitions
Wikipédia
OpenStack est un ensemble de logiciels open source permettant de
déployer des infrastructures de cloud Computing (IaaS).
Openstack.org
OpenStack est un système d'exploitation cloud qui contrôle de
grands pools de ressources de calcul, de stockage et de mise en
réseau dans un centre de données, le tout géré via un tableau de
bord qui donne aux administrateurs le contrôle tout en
permettant à leurs utilisateurs de provisionner des ressources via
une interface Web.
9 ID Cloud Computing Introduction à Openstack
Framework Iaas Modulaire
OpenStack est avant tout un "framework cloud modulaire"
permettant l’implémentation d’une infrastructure IT
scalable :
Framework
• Ensemble de composants logiciels
• Bases d'une infrastructure IT
Cloud (IaaS)
• Infrastructure libre service, à la demande
Modulaire
• un ensemble de modules, pas tous nécessaires
• chaque module peut être configuré en fonction de besoins
• chaque module peut-être étendu (drivers)
1 ID Cloud Computing Introduction à Openstack
0
Définitions
► L’écosystème OpenStack
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
1 ID Cloud Computing Introduction à Openstack
1
Définitions
L’écosystème OpenStack
► Historique
Gouvernance
Communauté
Packaging
Développement
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
1 ID Cloud Computing Introduction à Openstack
2
Historique
2010 : Rackspace Hosting + NASA
lancent un projet communautaire et
Open source
Objectif : créer et offrir des
services de Cloud Computing
avec du matériel standard
Introduction à
Openstack
ID Cloud Computing 9
Cycle de vie des versions
2 releases annuelles,
1 version « stable, »
2 versions « supportées »
2018 2019 2020 2021 2022
18 fev. 10 Avr. 13 Mai. 14 Avr. 30 Mai.
Queens Stein Ussuri Wallaby Yoga
30 aout 30 aout 16 Oct. 14 Oct. 6 Oct. 5 Oct.
Pike Rocky Train Victoria Xena Zed
https://www.objectif-libre.com/fr/
14 ID Cloud Computing Introduction à Openstack
Releases Timeline
https://releases.openstack.org/
15 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
Historique
► Gouvernance
Communauté
Packaging
Développement
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
16 ID Cloud Computing Introduction à Openstack
La fondation OpenStack
Créé en 2012
Entité indépendante de gouvernance principale du projet
Les membres du « board of directors » sont issus des
entreprises sponsors et élus par les membres individuels
Tout le monde peut devenir membre individuel
(gratuitement)
Supporte le projet par différents moyens :
• Evénements : organisation (Summits) ou participation (OSCON,
etc.)
• Infrastructure de développement (serveurs)
• Ressources humaines : marketing, release manager, quelques
développeurs (principalement sur l’infrastructure)
Plus de 850 organisations à travers le monde
Plus de 9500 membres individuels dans 100 pays
17 ID Cloud Computing Introduction à Openstack
OpenStack Nation
“définir et superviser la “assure la supervision “représentent un large
direction technique stratégique et financière éventail d'utilisateurs
d'OpenStack” des ressources et du d'entreprises, d'universités
personnel de la Fondation”. et de fournisseurs de
services”
https://www.openstack.org/foundation/
18 ID Cloud Computing Introduction à Openstack
OpenStack Summit
Aux USA jusqu’en 2013
Aujourd’hui : alternance USA et Asie/Europe
Quelques centaines au début à 4500 de
participants aujourd’hui
En parallèle : conférence (utilisateurs, décideurs)
et Design Summit (développeurs)
Détermine le nom de la release : lieu/ville à
proximité du Summit
19 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
Historique
G ouvernance
► Communauté
Packaging
Développement
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
20 ID Cloud Computing Introduction à Openstack
Quelques soutiens/contributeurs
Rackspace et la NASA
Canonical, Red Hat, Suse, HP, IBM, Dell, Intel
Huawei, Cisco, Juniper,
NetApp, VMWare
Yahoo, Bull
Mirantis, StackOps, …
…
https://www.openstack.org/foundation/companies/
21 ID Cloud Computing Introduction à Openstack
... et utilisateurs
Tous les contributeurs précédemment cités
CloudWatt (Orange) et Numergy (SFR)
CERN,
Wikimedia
Paypal, Comcast, Etc.
Sans compter les implémentations confidentielles
…
https://www.openstack.org/user-stories/
22 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
Historique
G ouvernance
C ommunauté
► Packaging
Développement
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
23 ID Cloud Computing Introduction à Openstack
Packaging : Ubuntu
Le packaging est fait dans de multiples
distributions, RPM, DEB et autres
Ubuntu est historiquement la plateforme de
référence pour le développement d’OpenStack
Le packaging dans Ubuntu suit de près le
développement d’OpenStack, et des tests
automatisés sont réalisés
Canonical fournit la Ubuntu Cloud Archive, qui
met à disposition la dernière version d’OpenStack
pour la dernière Ubuntu LTS
24 ID Cloud Computing Introduction à Openstack
Les autres distributions
OpenStack est intégré dans les dépôts officiels
de Debian
Red Hat est très actif dans la communauté, et
propose :
• Une distribution avec support : R HOS
• le cycle de release de Fedora est synchronisé avec
celui d’OpenStack
StackOps
Mirantis
HP, Nokia, Ericsson, …
https://www.openstack.org/marketplace/distros/
25 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
Historique
G ouvernance
C ommunauté
Packaging
► Développement
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
26 ID Cloud Computing Introduction à Openstack
Développement
Python
Ouvert à tous (individuels et entreprises)
Cycle de développement de 6 mois débuté par un
(design) summit, et Planning public
Outils :
• Launchpad (blueprints, bugs) + G it (développement) +
GitHub (diffusion des sources)
• Sur chaque commit : peer review (Gerrit) + intégration
continue
• Exécution de différents tests par Jenkins
• Plateforme de référence et modèle de développement :
Ubuntu
27 ID Cloud Computing Introduction à Openstack
Informations
Principalement sur le wiki : https://wiki.openstack.org
Le planning : https://releases.openstack.org/
Les blueprints et bugs : https://launchpad.net/openstack
Les patchs et leurs reviews : https://review.openstack.org
Le code : https://git.openstack.org
Les sources (tarballs) : http://tarballs.openstack.org/
Les statistiques :
http://stackalytics.com/?release=queens
28 ID Cloud Computing Introduction à Openstack
Statistiques company contributions
http://stackal
ytics.com/?r
29 ID Cloud Computing Introduction à Openstack
elease=train
Statistiques Modules contributions
30 ID Cloud Computing Introduction à Openstack
Stackforge
Un forum pour les projets relatifs à OpenStack
Forge pour les nouveaux projets en lien avec
OpenStack
Bénéficient de l’infrastructure du projet
OpenStack, mais la séparation reste claire
Les projets démarrent dans Stackforge et peuvent
ensuite rejoindre le projet OpenStack
https://github.com/stackforge
31 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
► L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
Premiers pas
32 ID Cloud Computing Introduction à Openstack
Principes de conception
1. L'évolutivité et l'élasticité sont nos principaux objectifsToute
fonctionnalité qui limite nos objectifs principaux doit être facultative
2. Tout doit être asynchrone (si vous ne pouvez pas faire quelque chose
de manière asynchrone, voir #2)
3. Tous les composants requis doivent être évolutifs horizontalement
4. Utilisez toujours "l'architecture sans partage (SN)" ou le "sharding" (si
vous ne pouvez rien partager/fragment, voir #2)
5. Distribuez tout (en particulier la logique. Déplacez la logique là où
l'état existe naturellement)
6. Acceptez la « cohérence éventuelle » et utilisez-la là où elle est
appropriée.
7. Testez tout. Nous avons besoin de tests avec le code soumis
33 ID Cloud Computing Introduction à Openstack
Technologies mises en œuvre
Approche « micro-services »
Communications inter-services via API
(synchrone) limitées
Utilisation massive de commandes par messages
(AMPQ)
Une base de donnée par services
Majorité de services sans états (state-less)
34 ID Cloud Computing Introduction à Openstack
Pour résumer
Des composants indépendants
Qui dialoguent entre eux via une file d'attente
(RabitMQ, protocole AMQP)
Et qui peuvent échanger des informations via les
API qu'ils exposent
35 ID Cloud Computing Introduction à Openstack
Composants principaux
Composants Individuels et autonomes
36 ID Cloud Computing Introduction à Openstack
Aperçu : pour un utilisateur
37 ID Cloud Computing Introduction à Openstack
Ce que ça cache …
http://docs.openstack.org/ops-guide/architecture.html
38 ID Cloud Computing Introduction à Openstack
Zoom …
Introduction à
Openstack
ID Cloud Computing 35
Grands principes d’ implémentation
Développement en Python (Django pour Horizon)
Réutilisation de composants existants
Tous les composants doivent être configurés pour
communiquer avec le référentiel central (keystone)
La plupart doivent être configurés pour communiquer
avec le gestionnaire message (RabbitMQ)
Chaque sous-projet est découpé en plusieurs services
Un fichier de configuration par service
Toutes les fonctionnalités doivent être accessibles par
l’API
40 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
L’architecture
► Les sous-Projets
Les Grands Principes
d’utilisation
Premiers pas
41 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
► "Core", "Big tent" et "Tools"
Détail des principaux projets
Les Grands Principes d’utilisation
Premiers pas
42 ID Cloud Computing Introduction à Openstack
Les sous-projets « Core »
Indispensables :
• Gestion/execution des instances (Compute) : Nova
• Authentification, Autorisations (Identity Service) :
Keystone
• C atalogue de services : Keystone
• Registre d’images (Image Service) : Glance
• R éseau (Networking) : Neutron
Stockage :
• S tockage block (Block S torage) : Cinder
• S tockage objet (Object S torage ) : Swift
43 ID Cloud Computing Introduction à Openstack
Sous-projets « Big Tent »
Suivi / management
• C onsole web (Dashboard) : Horizon
• Orchestration des ressources (Orchestration) : Heat
• Collecte de métriques (Metering) : Ceilometer
Données
• Bases de données : Trove
• Traitement de masse : Sahara
...
44 ID Cloud Computing Introduction à Openstack
« Big Tent » et « Core »
45 ID Cloud Computing Introduction à Openstack
Panorama des composants d’OpenStack
https://www.openstack.org/software/
46 ID Cloud Computing Introduction à Openstack
Evolution
https://fr.wikipedia.org/wiki/OpenStack
47 ID Cloud Computing Introduction à Openstack
Evolution : accélération …
https://fr.wikipedia.org/wiki/OpenStack
48 ID Cloud Computing Introduction à Openstack
Evolution : accélération …
https://fr.wikipedia.org/wiki/OpenStack
49 ID Cloud Computing Introduction à Openstack
Maturité / Statistiques
https://www.openstack.org/software/project-navigator
50 ID Cloud Computing Introduction à Openstack
CORRESPONDANCE OPENSTACK - AWS
51 ID Cloud Computing Introduction à Openstack
Sous-projets « Tools »
Oslo (ou OpenStack common) :
• contient le code commun à plusieurs composants d’OpenStack
• Son utilisation est transparente pour le déployeur
rootwrap
• wrapper pour les commandes root utilisée par les projets
TripleO
• OpenStack On OpenStack
• Objectif : pouvoir d´eployer un cloud OpenStack (overcloud) à
partir d’un cloud OpenStack (undercloud)
Tempest,
• Suite de tests d’un cloud OpenStack
• Effectue des appels à l’API et vérifie le résultat
• Est très utilisé par les développeurs via l’intégration continue
…
52 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
"Core", "Big tent" et "Tools"
► Détail des principaux projets
Les Grands Principes d’utilisation
Premiers pas
53 ID Cloud Computing Introduction à Openstack
Keystone (identity)
Service de renseignements (utilisateurs, groupes,
projets. . . )
Authentifie les utilisateurs en leur donnant des
jetons
Valide l’authenticité d’un jeton
Dépositaire du catalogue de service
54 ID Cloud Computing Introduction à Openstack
Nova (compute)
Gère le catalogue des instances
Traite les demandes de création d’instance (en relation
avec l’hyperviseur)
Gère le placement des instances sur les noeuds compute
Fournit les métadonnées (systèmes et utilisateurs) aux
instances
Assure des fonctions réseaux (limitées : création de
bridge, DHCP, firewall. . . ), bientôt abandonnées.
Fournit un accès aux instances (console, VNC, Spice. . . )
KVM, Xen, ESX, Hyper-V, Docker et LXC
55 ID Cloud Computing Introduction à Openstack
Glance (images)
Service « images» de l’infrastructure virtualisée
Stocke et distribue les images d’instance
Appelé par Compute (Nova) lors de l’instanciation
d’une nouvelle Instance.
Format des images : raw, vmdk, qcow , iso, …
Gère les métadonnées des images (type, OS,
architecture. . . )
Plusieurs backend de stockage :
• Système de fichier local ou NFS (NAS/SAN)
• Swift (OpenStack Object Service)
• S 3 (Object S ervice Amazon)
• Ceph
56 ID Cloud Computing Introduction à Openstack
Neutron (Network)
Virtualisation du réseau
API Unifiée, pour piloter plusieurs architectures
réseau :
• Linux Bridge,
• OpenVSwitch
• S DN (S oftware-Defined Network) : OpenC ontrail,
OpenDaylight, Cisco Nexus1000, VmWare NSX, …
57 ID Cloud Computing Introduction à Openstack
Horizon (dashboard)
Interface web
Fournit une interface graphique pour gérer les
ressources
Permet de surveiller l’utilisation des ressources
58 ID Cloud Computing Introduction à Openstack
Choix et contraintes sur les composants
Keystone est indispensable
L’utilisation de Nova va de paire avec Glance
Nova propose une couche réseau simpliste, mais
souvent suffisante
Neutron est puissant, mais complexe
Cinder s’avèrera souvent utile
Ceilometer et Heat vont souvent ensemble
Swift est indépendant des autres composants
59 ID Cloud Computing Introduction à Openstack
Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
► Les Grands Principes d’utilisation
Premiers pas
60 ID Cloud Computing Introduction à Openstack
Grands principes d’utilisation
Les instances sont éphémères, les données sont
persistantes
On est prêt à perdre l'instance, mais pas le
service.
Les données doivent être stockée sur un
stockage persistant.
Il faut séparer les données des instances
Une instance doit être utilisée comme ressource
de calcul
Une image se personnalise lors de son
instanciation grâce à l’API de metadata
61 ID Cloud Computing Introduction à Openstack
Les instances
Image : le master, généralement un OS bootable et
“cloud ready”.
Instance : forme dynamique d’une image (la VM).
Gabarit (flavor) : Type d’instance, mensurations (cpu,
ram, capacité disque,...).
On lance une instance à partir d’une image, en lui
affectant des ressources via un gabarit.
62 ID Cloud Computing C loud et Openstack - Introduction
Configuration des instances
Des métadonnées sont associées aux différents objets
• Metadata : définie par le système
• Userdata : définie par l’utilisateur
Cloud-init : mécanisme de personnalisation des
instances lors de la création
Une image se configure/personnalise lors de son
instanciation grâce à l’API de metadata, et le
mécanisme Cloud-Init
63 ID Cloud Computing C loud et Openstack - Introduction
Les volumes
Volume : espace de stockage persistant. Peut être de
type bloc ou objet.
Une instance est éphémère. C’est une ressource de
calcul.
Les données sont persistantes.
Il faut séparer les données des instances, et les
stocker sur un stockage persistant : un volume
64 ID Cloud Computing C loud et Openstack - Introduction
Le réseau
IP Fixe : adresse IP « interne » associée à chaque instance »
IP flottantes (Floating IP) : adresse IP allouée à la demande
et utilisée pour communiquer avec le réseau “externe”.
Groupe de sécurité (Security groups) : ensemble de règles
de filtrage de flux appliqué à l’entrée des instances.
Pour pouvoir accéder à une instance, il faut lui
affecter une IP flottante, et définir des règles de
sécurité.
65 ID Cloud Computing C loud et Openstack - Introduction
Connection aux instances
Paire de clés (Keypairs) : clé privée + clé publique
permettant les connexions aux instances via SSH.
On n’utilise plus de mot de passe pour se connecter
aux instances, mais des paires de clés.
66 ID Cloud Computing C loud et Openstack - Introduction
Gestion des utilisateurs
Projet (Project/Tenant) : unité d’appartenance de base
= propriétaire des ressources.
Utilisateur (User) : compte autorisé à utiliser les API
Quota : contrôle l’utilisation des ressources (vcpu,
ram, fip, security groups,...) dans un projet
On associe les ressources à un projet, via des
quotas.
Les utilisateurs deviennent membre des projets.
67 ID Cloud Computing C loud et Openstack - Introduction
Cycle de vie des instances et continuité
de service
Stack : ensemble des ressources IaaS utilisées par une
application.
Infrastructure « as code » : les stacks sont décrits
dans des fichiers (yaml, python, …), et sont de
préférence placé en gestion de version Infrastructure
« jetable » : tout ce qui est déployé doit pouvoir être
redéployé, dupliqué, …
On est prêt à perdre une instance mais pas le
service. C’est l’application doit assurer la continuité
du service, pas (plus) l’infrastructure.
68 ID Cloud Computing C loud et Openstack - Introduction
Accès aux services
APIs REST : Interface permettant à un logiciel
d’utiliser un service ou une bibliothèque, via des
requêtes HTTP
Endpoint : URL permettant l’accès à une API. Un
endpoint par service.
Catalogue de services : services disponibles et
accessibles via les API.
Toutes les opérations peuvent être réalisées par des
appels via les API REST.
69 ID Cloud Computing C loud et Openstack - Introduction
Définitions
L’écosystème OpenStack
L’architecture
Les sous-Projets
Les Grands Principes d’utilisation
► Premiers pas
70 ID Cloud Computing Introduction à Openstack
La console : Horizon
71 ID Cloud Computing Introduction à Openstack
Les APIs
Les clients (y compris Horizon) utilisent l’API
Des crédentials sont nécessaires
• utilisateur + mot de passe + projet
Direct, en HTTP, via des outils comme curl
Avec une bibliothèque
• Les implémentations officielles en Python
• D’autres implémentations pour d’autres langages
(exemple : jclouds)
72 ID Cloud Computing Introduction à Openstack
Les clients
Des clients en ligne de commande :
• python-<service>client
Bibliothèques Python
L’authentification se fait en passant les
« credentials » par paramètres ou variables
d’environnement
S’appuie sur les API
• L’option « --debug » affiche la communication HTTP
73 ID Cloud Computing Introduction à Openstack
Démarrer avec Openstack
Devstack
• http://docs.openstack.org/developer/devstack/
• “a series of extensible scripts used to quickly bring up a
complete OpenStack environment”
• Ubuntu, RedHat
Packstack
• https://www.rdoproject.org/install/packstack/
• “installation utility that lets you spin up a proof of concept cloud
on one node”
• RedHat
Offres providers :
• https://www.citycloud.com/get-free-trials-on-openstack-clouds-
across-the-world/ http://trystack.org/ : 100$ / 1 mois
• …
https://www.openstack.org/software/start/
74 ID Cloud Computing Introduction à Openstack
En conclusion
projet Opensource, viable, géré par une large
communauté
Rythme Évolution rapide
Ensemble de briques
Architecture complexe
Compétences variées (système, réseau,
développement, …)
75 ID Cloud Computing Introduction à Openstack
DEVSTACK : FAIRE TOURNER
RAPIDEMENT UN OPENSTACK
5 . 45
UTILITÉ DE DEVSTACK
Déployer rapidement un OpenStack
Utilisé par les développeurs pour tester leurs changements
Utilisé pour faire des démonstrations
Utilisé pour tester les APIs sans se préoccuper du
déploiement
Ne doit PAS être utilisé pour de la production
5 . 46
FONCTIONNEMENT DE DEVSTACK
Support d'Ubuntu 18.04/22.04, Fedora 24/25, CentOS/RHEL 7,
Debian,OpenSUSE
Un script shell qui fait tout le travail :stack.sh
Un fichier de configuration :local.conf
Installe toutes les dépendances nécessaires (paquets)
Clone les dépôts git (branche master par défaut)
Lance tous les composants
5 . 47
CONFIGURATION : LOCAL.CONF
Exemple
[[local|localrc]] ADMIN_PASSWORD=secrete
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD SERVICE_TOKEN=a682f596-76f3-
11e3-b3b2-e716f9080d50
#FIXED_RANGE=172.31.1.0/24
#FLOATING_RANGE=192.168.20.0/25
#HOST_IP=10.3.4.5
5 . 48
CONSEILS D’UTILISATION
DevStack installe beaucoup de choses sur la machine
Il est recommandé de travailler dans une VM
Pour tester tous les composants OpenStack dans de bonnes
conditions,plusieurs Go de RAM sont nécessaires
L’utilisation de Vagrant est conseillée
LE PRINCIPE
Toutes les fonctionnalités sont accessibles par l’API
Les clients (y compris Horizon) utilisent l’API
Des crédentials sont nécessaires,avec l'API OpenStack
:
utilisateur
mot de passe
projet (tenant)
domaine
LES APIS OPENSTACK
Une API par service OpenStack
Versionnée, la rétro-compatibilité est assurée
Le corps des requêtes et réponses est formatté avec
JSON
Architecture REST
Les ressources gérées sont spécifiques à un projet
https://developer.openstack.org/#api
ACCÈS AUX APIS
Direct, en HTTP, via des outils comme curl
Avec une bibliothèque
Les implémentations officielles en Python
OpenStackSDK
D’autres implémentations,y compris pour d’autres langages
(exemple :jclouds)
Shade (bibliothèque Python incluant la business logic)
Avec les outils officiels en ligne de commande
Avec Horizon
Au travers d'outils tiers, plus haut niveau (exemple :
Terraform)
CLIENTS OFFICIELS
OpenStack fournit des clients officiels
Historiquement :pyt hon-PROJETclient (bibliothèque
Python et CLI)
Aujourd'hui :openst ackclient (CLI)
Outils CLI
L’authentification se fait en passant les crédentials par
paramètres,variables d’environnement ou fichier de
configuration
L’option --debug affiche la communication HTTP
OPENSTACK CLIENT
Client CLI unifié
Commandes du type
openstack < res so ur ce > < a c t i o n > (shell interactif
disponible)
Vise à remplacer les clients CLI spécifiques
Permet une expérience utilisateur plus homogène
Fichier de configuration clouds.yam l
https://docs.openstack.org/python-
openstackclient/latest/configuration/index.html#configuration-
files
KEYSTONE : AUTHENTIFICATION, AUTORISATION ET
CATALOGUE DE SERVICES
PRINCIPES
Keystone est responsable de l'authentification,
l'autorisation et le catalogue de services.
L'utilisateur standard s'authentifie auprès de
Keystone L'administrateur intéragit régulièrement
avec Keystone
API
API v3 :port 5000
Gère :
Utilisateurs,groupes
Projets (tenants)
Rôles (lien entre utilisateur et projet)
Domaines
Services et endpoints (catalogue de services)
Fournit :
Tokens (jetons d'authentification)
CATALOGUE DE SERVICES
Pour chaque service, plusieurs endpoints sont possibles en
fonction de :
la région
le type d'interface (public,internal,administration)
SCÉNARIO D’UTILISATION TYPIQUE
Interactions avec Keystone
6 . 11
INSTALLATION ET CONFIGURATION
PaquetAPT :keystone
Intégration serveur web WSGI (Apache par défaut)
Fichier de configuration: /etc/keystone/keystone.conf
Backends utilisateurs/groupes : SQL, LDAP (ou Active
Directory)
Backends projets/rôles/services/endpoints :SQL
Backends tokens :SQL, Memcache, aucun (suivant le type de
tokens)
DRIVERS POUR TOKENS
Uuid
PKI
Fernet
BOOTSTRAP
Création des services et endpoints (à commencer par Keystone)
Création d'utilisateurs, groupes, domaines
Fonctionnalité de bootstrap
NOVA : COMPUTE
6 . 12
PRINCIPES
Gère principalement les instances
Les instances sont créées à partir des images fournies par
Glance
Les interfaces réseaux des instances sont associées à des
ports Neutron
Du stockage block peut être fourni aux instances par Cinder
6 . 13
PROPRIÉTÉS D’UNE INSTANCE
Éphémère, a priori non hautement disponible
Définie par une flavor
Construite à partir d’une image
Optionnel :attachement de volumes
Optionnel :boot depuis un volume
Optionnel :une clé SSH publique
Optionnel :des ports réseaux
6 . 14
API
Ressources gérées :
Instances
Flavors (types d’instance)
Keypairs :ressource propre à l'utilisateur (et non propre au
projet)
6 . 15
ACTIONS SUR LES INSTANCES
Reboot /shutdown
Snapshot
Lecture des logs
Accès VNC
Redimensionnement
Migration (admin)
6 . 16
NOVA API
Double rôle
API de manipulation des instances par l’utilisateur
API à destination des instances :API de metadata
L’API de metadata doit être accessible à l’adresse
http://169.254.169.254/
L’API de metadata fournit des informations de configuration
personnalisées à chacune des instances
NOVA COMPUTE
Pilote les instances (machines virtuelles ou physiques)
Tire partie de libvirt ou d’autres APIs comme XenAPI
Drivers :libvirt (KVM, LXC, etc.), XenAPI, VMWare vSphere,
Ironic
Permet de récupérer les logs de la console et une console
VNC
NOVA SCHEDULER
Service qui distribue les demandes d’instances sur les
nœuds compute
Filter, Chance, Multi Scheduler
Filtres par défaut :
AvailabilityZoneFilter,
RamFilter, ComputeFilter
Tri par poids, par défaut :
RamWeigher
LE SCHEDULER NOVA EN ACTION
Fonctionnement de nova-scheduler
NOVA CONDUCTOR
Service facultatif qui améliore la sécurité
Fait office de proxy entre les nœuds compute et la BDD
Les nœuds compute, vulnérables, n’ont donc plus d’accès à
la BDD
GLANCE : REGISTRE D'IMAGES
6 . 17
PRINCIPES
Registre d'images et de snapshots
Propriétés sur les images
6 . 18
API
API v2 :version courante,gère images et
snapshots
API artifacts :version future, plus généraliste
6 . 19
TYPES D’IMAGES
Glance supporte un large éventail de types d’images, limité par
le support de la technologie sous-jacente à Nova
raw
qcow2
ami
vmdk
iso
6 . 20
PROPRIÉTÉS DES IMAGES DANS GLANCE
L’utilisateur peut définir un certain nombre de propriétés dont
certaines seront utilisées lors de l’instanciation
Type d’image
Architecture
Distribution
Version de la
distribution
Espace disque minimum
RAM minimum
6 . 21
PARTAGE DES IMAGES
Image publique :accessible à tous les projets
Par défaut,seul l'administrateur peut rendre une image
publique
Image partagée :accessible à un ou plusieurs autre(s)
projet(s)
6 . 22
TÉLÉCHARGER DES IMAGES
La plupart des OS fournissent des images régulièrement mises à
jour :
Ubuntu : https://cloud-images.ubuntu.com/
Debian : https://cdimage.debian.org/cdimage/openstack/
CentOS :https://cloud.centos.org/centos/
6 . 23
BACKENDS
Swift ou S3
Ceph
HTTP
Répertoire
local
INSTALLATION
PaquetAPT :glance-api
NEUTRON : RÉSEAU
6 . 24
API
L’API permet notamment de manipuler ces ressources :
Réseau (network) :niveau 2
Sous-réseau (subnet) :niveau 3
Port :attachable à une interface sur une instance, un load-
balancer,etc.
Routeur
IP flottante,groupe de sécurité
6 . 25
LES IP FLOTTANTES
En plus des fixedIPs portées par les instances
Allocation (réservation pour le projet) d'une IP depuis un pool
Association d'une IP allouée à un port (d'une instance, par
exemple)
Non portées directement par les instances
6 . 26
LES GROUPES DE SÉCURITÉ
Équivalent à un firewall devant chaque instance
Une instance peut être associée à un ou plusieurs groupes de
sécurité
Gestion des accès en entrée et sortie
Règles par protocole (TCP/UDP/ICMP) et par port
Cible une adresse IP, un réseau ou un autre groupe de
sécurité
6 . 27
FONCTIONNALITÉS SUPPLÉMENTAIRES
Outre les fonctions réseau de base niveaux 2 et 3, Neutron peut
fournir d’autres services :
Load Balancing
Firewall :diffère des groupes de sécurité
VPN :permet d’accéder à un réseau privé sans IP
flottantes
QoS
6 . 28
PRINCIPES
SoftwareDefined Networking (SDN)
Auparavant Quantum et nova-network
neutron-server :fournit l’API
Agent DHCP :fournit le service de DHCP pour les instances
Agent L3 :gère la couche 3 du réseau,le routage
Plugin :LinuxBridge par défaut, d’autres implémentations
libres/propriétaires,logicielles/matérielles existent
FONCTIONNALITÉS SUPPLÉMENTAIRES
Outre les fonctions réseau de base niveaux 2 et 3, Neutron peut
fournir d’autres services :
Load Balancing (HAProxy,...)
Firewall (vArmour, ...) :diffère des groupes de sécurité
VPN (Openswan, ...) :permet d’accéder à un réseau privé sans
IP flottantes
Ces fonctionnalités se basent également sur des plugins
PLUGINS ML2
Modular Layer 2
LinuxBridge
OpenVSwitch
OpenDaylight
Contrail,OpenContrail
Nuage Networks
VMWare NSX
cf.OpenFlow
IMPLÉMENTATION
Chaque réseau est un bridge
Les bridges sont étendus entre les machines via des tunnels
(type VXLAN) si nécessaires
Neutron tire partie des namespaces réseaux du noyau Linux
pour permettre l’IP overlapping
Le proxy de metadata est un composant qui permet aux
instances isolées dans leur réseau de joindre l’API de
metadata fournie par Nova
SCHÉMA
Vue utilisateur du réseau
SCHÉMA
CINDER : STOCKAGE BLOCK
6 . 29
PRINCIPES
Fournit des volumes (stockage block) attachables aux
instances
Gère différents types de volume
Gère snapshots et backups de volumes
6 . 30
UTILISATION
Volume supplémentaire (et stockage persistant) sur une
instance
Boot from volume :l’OS est sur le volume
Fonctionnalité de backup vers un object store (Swift ou Ceph)
6 . 31
PRINCIPES
Auparavant nova-volume
Fournit des volumes
Attachement des volumes via iSCSI par défaut
7 . 34
INSTALLATION
Paquet cinder-api :fournit l’API
Paquet cinder-volume :création et gestion des volumes
Paquet cinder-scheduler :distribue les demandes de création
de volume
Paquet cinder-backup (optionnel) :backup vers un object
store
7 . 35
BACKENDS
Utilisation de plusieurs backends en parallèle
possible
LVM (par défaut)
GlusterFS
Ceph
Systèmes de stockage propriétaires type NetApp
DRBD
7 . 36
HORIZON : DASHBOARD WEB
6 . 36
PRINCIPES
Fournit une interface web
Utilise les APIs existantes pour fournir une interface
utilisateur
Log in possible sans préciser un projet :Horizon détermine la
liste des projets accessible
6 . 37
UTILISATION
Une interface par projet (possibilité de switcher)
Catalogue de services accessible
Téléchargement d'un fichier de configuration
clouds.yaml
Une zone “admin” restreinte
6 . 38
PRINCIPES
Horizon est un module Django
OpenStack Dashboard est l’implémentation officielle de ce
module
Logo du framework web Python Django
7 . 38
CONFIGURATION
local_settings.py
Les services apparaissent dans Horizon s’ils sont répertoriés
dans le catalogue de services de Keystone
7 . 39
SWIFT : STOCKAGE OBJET
7 . 40
PRINCIPES
SDS : SoftwareDefined Storage
Utilisation de commodity
hardware
Théorème CAP :on en choisit deux
Architecture totalement acentrée
Pas de base de données centrale
7 . 41
IMPLÉMENTATION
Proxy :serveur API par lequel passent toutes les requêtes
Object server :serveur de stockage
Container server :maintient des listes d’objects dans des
containers
Account server :maintient des listes de containers dans des
accounts
Chaque objet est répliqué n fois (3 par défaut)
7 . 42
LE RING
Problème :comment décider quelle donnée va sur quel
object server
Le ring est découpé en partitions
On situe chaque donnée dans le ring afin de déterminer sa
partition
Une partition est associée à plusieurs serveurs
7 . 43
SCHÉMA
Architecture Swift
7 . 44
HEAT : ORCHESTRATION
6 . 32
GÉNÉRALITÉS
Heat est la solution native OpenStack, service d'orchestration
Heat fournit une API de manipulation de stacks à partir de
templates
Un template Heat suit le format HOT (HeatOrchestration
Template),basé sur YAML
6 . 33
UN TEMPLATE HEAT ORCHESTRATION
TEMPLATE (HOT)
parameters - resources - outputs
heat_template_version: 2013-05-23
description: Simple template to deploy a single compute instance
resources:
my_instance:
type: OS::Nova::Server
properties:
key_name: my_key
image: F18-x86_64-cfntools
flavor: m1.small
6 . 34
CONSTRUIRE UN TEMPLATE À PARTIR
D’EXISTANT
Multiples projets en cours de développement
Flame (Cloudwatt)
HOT builder
Merlin
6 . 35
ARCHITECTURE
heat-api
heat-engine
7 . 50
CEILOMETER : COLLECTE DE MÉTRIQUES
7 . 45
SURVEILLER L’UTILISATION DE SON
INFRASTRUCTURE AVEC CEILOMETER
Indexer et stocker différentes métriques concernant
l’utilisation des différents services du cloud
Fournir des APIs permettant de récupérer ces données
Base pour construire des outils de facturation (exemple :
CloudKitty)
7 . 46
CEILOMETER
Récupère les données et les stocke
Historiquement :stockage MongoDB
Aujourd'hui :stockage Gnocchi
7 . 47
GNOCCHI : TIME-SERIES DATABASE
Pourquoi Gnocchi ? Palier aux problème de scalabilité de
Ceilometer + MongoDB
Initié par des développeurs de Ceilometer et intégré à
l’équipe projet Ceilometer
Fournit une API pour lire et écrire les données
Se base sur une BDD relationnelle et un système de stockage
objet
7 . 48
DÉPLOYER OPENSTACK
7.1