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 vos 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 à droite (par exemple le compte admin
) puis télécharger le Fichier OpenStack RC
.
Charger l’environnement du projet
En SSH, sur le serveur (où est installé) openstack
, lancer la commande :
source admin-openrc.sh
💡 Astuce: Pour copier un fichier d'une machine distante vers le serveur
openstack
via 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>
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
On peut à présent se connecter au portail d’OpenStack en utilisant les domaines.
📝 Note: Maintenant que vous avez 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 choix possibles pour une commande, par exemple la commandeopenstack domain --help
affichera :
Command "domain" matches: domain create domain delete domain list domain set domain showOn saura ainsi supprimer le domaine précédemment créé..
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
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> <nom-du-groupe> <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
Gérer les réseaux et les sous-réseaux
Pour créer un réseau, exécutez la commande suivante :
openstack network create <nom-du-reseau>
Pour créer le sous-réseau, exécutez la commande suivante :
openstack subnet create --network <nom-du-reseau> --subnet-range 192.168.0.0/24 --allocation-pool start=192.168.0.100,end=192.168.0.199 --dns-nameserver 9.9.9.9 <nom-du-sous-reseau>
📝 Note: Par exemple, pour le réseau 192.168.0.0/24, avec une plage dhcp allant de l'adresse .100 à .199 et qui pour dns 9.9.9.9 (adresse dns pour quad9).
Gérer les routeurs
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
openstack router add subnet <nom-du-routeur> <nom-du-sous-reseau>
Gérer les IP flottantes
Pour allouer une IP flottante, exécutez la commande suivante :
openstack floating ip create public
Gestion des groupes de sécurité
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> --key-name <nom-de-la-paire-de-cles> --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 :
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
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 :
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 --class default
Pour lister les quotas par défaut, exécutez la commande suivante :
openstack quota show <mon-du-projet>
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>
Pour lister les quotas pour un projet, exécutez la commande suivante :
openstack quota show <mon-du-projet>
🔗 Source: https://ubuntu.com/..