Openstack, Les commandes de base
OpenStack est un ensemble de logiciels open source permettant de déployer des infrastructures de cloud computing (infrastructure en tant que service). La technologie possède une architecture modulaire composée de plusieurs projets corrélés (Nova, Swift, Glance…) qui permettent de contrôler les différentes ressources des machines virtuelles telles que la puissance de calcul, le stockage ou encore le réseau inhérent au centre de données sollicité.
💡 Astuce: Pour installer une version légère d'Openstack pour un réseau local ou à titre d'expérience. je vous invites à consulter cet article qui vous permettra s'installer Devstack sur un serveur.
Se connecter à un projet avec le client intégré OpenStack
Ouvrir le tableau de bord d'OpenStack (http://<adresse-ip>/dashboard
) et se connecter avec ses identifiants.
Télécharger le Fichier OpenStack RC
d'un projet
Sélectionner un projet en haut à gauche (par exemple le projet admin
).
Puis sélectionner le compte dans le coin supérieur droit (par exemple le compte admin
), puis télécharger le Fichier OpenStack RC
.
📝 Note: L’objectif d'un fichier de type “rc”, de même que celui de la configuration de votre terminal
~/.bashrc
, est de fournir une configuration des variables d’environnement, des fonctions et des alias.
Charger l’environnement du projet
En SSH, sur le serveur, où est installé openstack
, lancer la commande pour charger l'environnement :
source admin-openrc.sh
💡 Astuce: Pour copier un fichier d'une machine distante vers le serveur
openstack
en ssh, la commande est la suivante :
scp ~/Téléchargements/admin-openrc.sh openstack:~/
Les Identités
Gérer les domaines
Les domaines sont des collections de projets, de groupes et d'utilisateurs. Ils limitent la visibilité de ces identités à d'autres domaines. Par conséquent, les domaines servent de base à la mise en œuvre de la multi-location dans OpenStack.
Pour créer un nouveau domaine, exécutez la commande :
openstack domain create --description "texte" <nom-du-domaine>
📝 Note: il est possible de modifier le domaine avec la commande :
openstack domain set –description “texte” <nom-du-domaine>
Pour répertorier la liste des domaines, la commande est la suivante :
openstack domain list
Nous devons ensuite créer un utilisateur administrateur (admin
) pour gérer les identités de ce domaine :
openstack user create --domain <nom-de-domaine> --description "texte" --email <courriel> --password-prompt admin
Puis lui attribuer le rôle d'administration (admin
) du domaine.
openstack role add --domain <nom-de-domaine> --user-domain <nom-de-domaine> --user admin admin
💡 Astuce: Le support multi-domaine n'est pas activé par défaut dans
devstack
. Pour l'activer il faudra modifier les fichiers suivants :
/etc/keystone/keystone.conf
Sous la section
[identity]
ajouter les lignes :
domain_specific_drivers_enabled = True domain_config_dir = /etc/keystone/domains
/opt/stack/horizon/openstack_dashboard/local/local_settings.py
A la fin du fichier, ajouter la ligne :
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=True
Puis redémarrer les services
apache
etkeystone
:
sudo service apache2 reload sudo systemctl restart devstack@keystone.service
On peut à présent se connecter au portail OpenStack en utilisant le nouveau domaine. Le champ Domaine est visible.
📝 Note: Maintenant que nous avons créé un domaine. Pour celui-ci, il faudra ajouter aux commandes l'option
--domain <nom-de-domaine>
.💡 Astuce: l'option
--help
ou-h
permet d'afficher tous les options d'une commande, par exemple la commande suivante :
openstack domain --help
Affichera :
Command “domain” matches: domain create domain delete domain list domain set domain show
Pour afficher toutes les options utiles à la modification du domaine :
openstack domaine set --help
📝 Note: Pour supprimer le domaine. Il faudra le désactiver avec la commande :
openstack set --disable <nom-du-domaine>
Puis le supprimer avec la commande :
openstack delete <nom-du-domaine>
Gérer les rôles
Les rôles mettent en œuvre les mécanismes de contrôle d'accès basé sur les rôles (RBAC
) dans OpenStack et définissent le niveau d'autorisation des utilisateurs ou des groupes au sein des domaines et des projets. Ils sont uniques au niveau mondial, ce qui signifie qu'ils sont partagés par tous les domaines existants.
Pour créer un rôle, exécutez la commande :
openstack role create --domain <nom-du-domaine> <nom-du-role>
💡 Astuce: Pour répertorier la liste des roles, la commande est la suivante :
openstack role list --domain <nom-du-domaine>
Gérer les projets
Les projets sont une abstraction utilisée par d'autres services OpenStack pour regrouper et isoler différents types de ressources (instances, volumes, etc.). Un domaine peut avoir plusieurs projets.
Pour créer un projet, exécutez la commande :
openstack project create --domain <nom-du-domaine> <nom-du-projet>
Gérer les utilisateurs et les groupes
Les utilisateurs et les groupes représentent les entités qui ont accès aux ressources à l'intérieur des projets et des domaines grâce aux rôles qui leur sont attribués.
Pour créer un utilisateur, exécutez la commande :
openstack user create --domain <nom-du-domaine> --email <courriel> --password-prompt <nom-de-l’utilisateur>
Pour créer un groupe, exécutez la commande suivante :
openstack group create --domain <nom-du-domaine> <nom-du-groupe>
Gérer les adhésions et les affectations
Pour ajouter un utilisateur à un groupe, exécutez la commande suivante :
openstack group add user --group-domain <nom-du-domaine> --user-domain <nom-du-domaine> <nom-du-groupe> <nom-de-l_utilisateur>
Pour attribuer le rôle de membre à un groupe sur un projet, exécutez la commande suivante :
openstack role add --project <nom-du-projet> --project-domain <nom-du-domaine> --group-domain <nom-du-domaine> --group <nom-du-groupe> <nom-du-role>
Pour attribuer le rôle de membre à un utilisateur sur un projet, exécutez la commande suivante :
openstack role add --project <nom-du-projet> --project-domain <nom-du-domaine> --user-domain <nom-du-domaine> --user <nom-de-l_utilisateur> <nom-du-role>
Les Modèles
Gérer les images
Télécharger par exemple, l’image d’Ubuntu serveur 22.04 LTS.
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img
Pour charger l’image vers le service d'image Glance, exécutez la commande suivante :
openstack image create --disk-format qcow2 --min-disk 8 --min-ram 512 --file ~/jammy-server-cloudimg-amd64-disk-kvm.img --public <nom-de-l_image>
Gérer des Gabarits (Flavors)
Les gabarits sont des modèles pour créer des instances sur OpenStack. Ils définissent la taille des ressources virtuelles attachées à l'instance par défaut lors du processus de provisionnement. Lors de la création d'une instance sur OpenStack, l'utilisateur doit spécifier à la fois l'image et le Gabarit.
Pour créer le gabarit exécutez la commande suivante :
openstack flavor create --ram 1024 --disk 10 --vcpus 1 <nom-du-gabarit>
Multi-location
Gérer les ressources des locataires
Pour créer une paire de clés, exécutez la commande suivante :
openstack keypair create --user-domain <nom-du-domaine> --user <nom-de-l’utilisateur> --private-key ~/<nom-de-la-paire-de-cles>.pem --type ssh <nom-de-la-paire-de-cles>
Réseau
⚠️ Avertissement: Pour les commandes suivantes, je vous invite à charger l'environnement du projet.
Télécharger le Fichier OpenStack RC correspondant au projet
Puis charger l'environnement à l'aide de la commande
source <nom-du-projet>-openrc.sh
Gérer les réseaux
Les réseaux sont des réseaux de superposition créés au dessus du réseau physique en fonction de la plate-forme SDN (Software Defined Networking) sous-jacente.
Pour créer un réseau, exécutez la commande suivante :
openstack network create <nom-du-reseau>
Gérer les sous-réseaux
Les sous-réseaux fournissent des services d'adressage IP au sein des réseaux virtuels, comprennant : la passerelle, les routes statiques, le DHCP et le DNS.
Pour créer le sous-réseau, exécutez la commande suivante :
openstack subnet create --network <nom-du-reseau> --subnet-range <addresse-reseau>/<masque-en-notation-CIDRD> --allocation-pool start=<adresse-ip>,end=<adresse-ip> --dns-nameserver <adresse-ip> <nom-du-sous-reseau>
Gérer les routeurs
Les routeurs connectent des sous-réseaux, permettant une communication inter-location et un accès aux réseaux externes à OpenStack, y compris Internet.
Pour créer le routeur, exécutez la commande suivante :
openstack router create <nom-du-routeur>
Pour définir le réseau public
comme une passerelle pour le routeur, exécutez la commande suivante :
openstack router set --external-gateway public <nom-du-routeur>
Pour attacher le routeur au sous-réseau <nom-du-sous-reseau> précedemment créé, exécutez la commande suivante :
openstack router add subnet <nom-du-routeur> <nom-du-sous-reseau>
Gérer les IP flottantes
Les IP flottantes permettent d'accéder aux instances des réseaux externes à OpenStack via le mécanisme NAT.
Pour allouer une IP flottante, exécutez la commande suivante :
openstack floating ip create public
Gestion des groupes de sécurité
Les groupes de sécurité sont une implémentation des listes de contrôle d'accès réseau (ACL), qui peuvent être utilisées pour limiter l'accès depuis /vers les instances.
Pour créer un groupe de sécurité, exécutez la commande suivante (permettant l'accès entrant, aux machines du cloud, en ssh sur le port 22 via le protocole tcp) :
openstack security group create <nom-du-groupe-de-securite>
Pour ajouter un règle au groupe de sécurité, exécutez la commande suivante :
openstack security group rule create --remote-ip 0.0.0.0/0 --dst-port 22:22 --protocol tcp --ingress <nom-du-groupe-de-securite>
Instances
Informations d'identification
Pour lancer des instances, exécutez la commande suivante :
openstack server create --flavor <nom-du-gabarit> --image <nom-de-l_image> --network <mon-du-reseau> --min 2 --max 2 <nom-de-l_instance>
📝 Note: les valeurs
--min 2 --max 2
permettent de créer deux instances.
Associer l'IP flottante
Pour associer une IP flottante, exécutez les commandes suivantes :
openstack server add floating ip <nom-de-l_instance> <adresse-ip>
💡 Astuce: ou (exemple pour la première instance) :
IP=$(openstack floating ip list | tail -n 2 | head -n 1 | awk ‘{print $4}’) openstack server add floating ip <nom-de-l_instance>-1 $IP
Attacher le groupe de sécurité
Nous devons définir les bonnes permissions dans le fichier <nom-de-la-paire-de-cles>.pem :
chmod 0400 <nom-de-la-paire-de-cles>.pem
Pour attacher un groupe de sécurité, exécutez la commande suivante :
openstack server add security group <nom-de-l_instance>-1 <nom-du-groupe-de-securite>
Accéder aux instances
Pour se connecter en SSH à l'instance, exécutez les commandes suivantes :
ssh -i ~/<nom-de-la-paire-de-cles>.pem -o StrictHostKeyChecking=no <nom-de-l_instance> <adresse-ip>
💡 Astuce: ou (exemple pour la première instance) :
IP=$(openstack floating ip list | tail -n 2 | head -n 1 | awk ‘{print $4}’) ssh -i ~/<nom-de-la-paire-de-cles>.pem -o StrictHostKeyChecking=no <nom-de-l_instance>-1@$IP
Supprimer des instances
Pour supprimer l'instance, exécutez la commande suivante :
openstack server delete <nom-de-l_instance>-2
Stockage
Types de stockage
Il existe trois types de stockage disponibles dans OpenStack :
Stockage éphémère : Stockage volatile qui peut être attaché aux instances pendant leur processus de provisionnement. Il est supprimé définitivement une fois que les instances sont supprimées. Le stockage éphémère est géré par Nova, et peut être utilisé pour stocker des données temporaires, y compris les fichiers courants du système d'exploitation, les caches, les tampons, etc.
Stockage par bloc : Stockage persistant qui est attaché par défaut aux instances pendant leur processus de provisionnement. Il n'est pas supprimé par défaut lorsque les instances sont supprimées. Le stockage en bloc est géré par Cinder, et peut être utilisé pour stocker des données persistantes, telles que des bases de données, des journaux, des binaires, etc.
Stockage d'objets : Stockage persistant natif du cloud qui n'est pas attaché aux instances, mais qui est accessible via l'API. Le stockage d'objets était auparavant géré par le service OpenStack Swift, mais dans les environnements de production, il est généralement mis en œuvre avec Ceph Object Gateway à la place.
Quotas
Gérer les quotas par défaut
Pour lister les quotas par défaut, exécutez la commande suivante :
openstack quota show --default
Pour mettre à jour le quota par défaut des instances (par exemple à 20 instances), exécutez la commande suivante :
openstack quota set --instances 20 --force default
Pour lister les quotas par défaut, exécutez la commande suivante :
openstack quota show default
Gérer les quotas par projet
Pour mettre à jour le quota pour les instances d'un projet (par exemple à 2 instances), exécutez la commande suivante :
openstack quota set --instances 2 <mon-du-projet> --force
Pour lister les quotas pour un projet, exécutez la commande suivante :
openstack quota show <mon-du-projet>
🔗 Source: https://ubuntu.com/..