Lantsei.lesCigales.ORG

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é.

openstack_logo.png


💡 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.

openstack_00.png

Télécharger le Fichier OpenStack RC d'un projet

Sélectionner un projet en haut à gauche (par exemple le projet admin).

openstack_01.png

Puis sélectionner le compte dans le coin supérieur droit (par exemple le compte admin), puis télécharger le Fichier OpenStack RC.

openstack_02.png

📝 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 et keystone :

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.

openstack_03.png

📝 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 :

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/..