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 vos 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 à droite (par exemple le compte admin) puis télécharger le Fichier OpenStack RC.

openstack_02.png

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

sudo service apache2 reload
sudo systemctl restart devstack@keystone

On peut à présent se connecter au portail d’OpenStack en utilisant les domaines.

openstack_03.png

📝 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 commande openstack domain --help affichera :

Command "domain" matches:
  domain create
  domain delete
  domain list
  domain set
  domain show

On 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 précedemment créé, exécutez la commande suivante :

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

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