# PIM-Compute ![](https://i.imgur.com/mYkkdE6.png) ## Nova compute ** La partie compute ** d'OpenStack, Nova, permet de communiquer avec l'hyperviseur pour lancer et gérer les machines virtuelles. Plusieurs types d'hyperviseurs sont actuellement disponibles tels que Xen, VMWare (ESX) et Hyper-V. Mais KVM est le mieux supporté par OpenStack. Nova est divisé en composants : ** Nova-api **: traite les requêtes API venant des clients ; **Nova-compute** : daemon nova qui gère les VM ; **Nova-scheduler** : coordonne le déploiement des VM sur les machines physiques ; **Nova-conductor** : interlocuteur entre nova-compute et la base de données. Dans une architecture classique, nova-compute peut être installé sur une ou plusieurs machines physiques. Ces daemons communiquent entre eux via le bus de **message RabbitMQ**. Toutes les demandes sont traitées par ** nova-api ** qui délègue ensuite la tâche à nova-compute. **Par exemple**, lors d'une demande de création d'instance (VM), ** nova-api ** fait une demande auprès de nova-scheduler afin de déterminer la machine hôte sur laquelle lancer l'instance (dépendant de sa taille et des disponibilités des serveurs physiques). La demande est ensuite transmise au nova-compute présent sur le ### Avant toute configuration lancer le fichier admin-openrc.sh ``` source admin-openrc.sh ``` ### Création d'une instance #### Généner une clé: Générer une paire de clés La plupart des images cloud supportent l’authentification par clé publique plutôt que l’authentification classique par mot de passe. Avant de lancer une instance, vous devez ajouter une clé publique au service Compute. ###### ssh-keygen -q -N "" Exporter la clé :-1: ###### openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey ##### Vérification des clé: ###### openstack keypair list ### Création d'un groupe de sécurité openstack security group create defaultTest #### Ajouter des règles au groupe de sécurité. ICMP: openstack security group rule create --proto icmp defaultTest SSH: openstack security group rule create --proto tcp --dst-port 22 defaultTest tcp HTTP: openstack security group rule create --protocol tcp --dst-port 80:80 --remote-ip 0.0.0.0/0 defaultTest ### création et démarage d'une instance: nom provider-instance, avec son image cirros par defautl qui vient avec openstack. ### example`openstack server create --flavor m1.tiny --image cirros --nic net-id=ReseauxInstanceA --security-group default --key-name mykey provider-instance openstack server create --flavor m1.small --image debian9 --nic net-id=ReseauxInstanceA --security-group defaultTest --key-name mykey provider-instance-debian ![](https://i.imgur.com/nnwwkIb.png) ### Vérifier le statut de l'instance ` $ openstack server list` vérification de la créaion de l'instance ![](https://i.imgur.com/BROL70p.png) ### Pour avoir les details sur une instance ``` openstack server show <instance ID> openstack server show e989d9d6-8e25-4125-8f65-48774afbc9e3 ``` ![](https://i.imgur.com/0pqXxSp.png) ### Demarer une instance ``` openstack server start <server> [<server> ...] openstack server start e989d9d6-8e25-4125-8f65-48774afbc9e3 ``` ### Diagnostique ``` openstack server show --diagnostics e989d9d6-8e25-4125-8f65-48774afbc9e3 ``` un résumé ``` openstack server resume <server> [<server> ...] openstack server resume e989d9d6-8e25-4125-8f65-48774afbc9e3 ``` ### Pour realiser plus de testes possible j'ai crée une machine qui se trouve dans le même réseaux que notre SVR-PIM-STACK et cette machine est SVR-BD Nous allons copier le fichier admin_source vers svr-bd ``` scp admin-openrc.sh oumby@svr-bd:/home/oumby/TestOpenStack ``` Deuxièmment nous allons rajouter le certificat de la machine serveur. ``` scp svr-pim-stack-chain.crt oumby@svr-bd:/home/oumby/TestOpenStack ``` copier le certificat dans : ``` sudo cp svr-pim-stack-chain.crt /usr/local/share/ca-certificates/ ``` puis générer le certificat ``` sudo update-ca-certificates ``` Prérequis installer sur la machine test ``` sudo apt install python3-openstackclient ``` https://docs.openstack.org/nova/rocky/admin/remote-console-access.html ### création d'un machine avec une adresse publique Nous avons besoin d'une adresses publique pour se connecter à distance sur une instance. Ip public == adresse flottante. ``` openstack server create --flavor m1.tiny --image cirros \ --nic net-id=fd581b24-ffb6-4975-9b2c-b264299318ee --security-group default \ --key-name mykey selfservice-instance ``` svr ubuntu ``` openstack server create --flavor m1.small --image ubuntu-bionic \ --nic net-id=fd581b24-ffb6-4975-9b2c-b264299318ee --security-group groupUbuntu \ --key-name mykey ubuntu-instance ``` ### Créer une image `openstack image create --public --disk-format qcow2 --container-format bare --file bionic-server-cloudimg-amd64.img ubuntu-bionic` ### Notre infra réseaux ![](https://i.imgur.com/wlqu6zK.png) ### Ajouter une ip flottante et récupérer l'adresse afin d'accéder à distance sur infra qui se trouve sur un autre réseaux A noté Pour les besoins de test j'ai crée une adresse floating ``` $ openstack floating ip create fr-east-1-public $ openstack floating ip create 3fe2a9f9-69d9-4d2a-9827-d60c239f7d5a ``` ### Associé ``` openstack server add floating ip ubuntu-instance 10.20.20.238 openstack server add floating ip selfservice-instance 10.20.20.21 ``` ![](https://i.imgur.com/IBDC2Ub.png) ### Dissocier une ip d’une instance ``` $ openstack server remove floating ip <instance> <ip_flottante> ``` ### Test d'utilisation de l'instance à distance #### Accès via interface Web `openstack console url show provider-instance-debian` ``` openstack console url show e989d9d6-8e25-4125-8f65-48774afbc9e3 ``` ##### Problème rencontré: Accéder à l’instance via l'url Lorsque j'essaye d'afficher l'url Unavailable console type novnc. (HTTP 400) (Request-ID: req-3d70b629-c772-4c09-9573-4739723f9b03) #### Accès en ssh ``` $ ssh <nom-utilisateur>@<ip-flottante> ``` Nous avons pu tester une connexion ssh à distance ![](https://i.imgur.com/Qqn9eJF.png) Nos Deux instances ![](https://i.imgur.com/c9neCwg.png) ### Remarque quand on tape le code ``` source admin_source.sh ``` même le mot de passe est incorrect y'a aucun messsage d'erreur. Lorsque vous allez essayer de créer une instance il faudra faire attention à la taille de memoire ram puisque en choisissant une petite taille, il est impossible de créer un vm avec une image ubuntu ou debian ### Développement des script avec pythonSDK Développement des script permettant de l'automatisation de la création d'une instance ne fonction: 1. Du gabarit 1. L'image 1. Le disque 1. Groupe de seccurity 1. L'affection à un reseaux avec une adresses ip floatante pour accès à distance ![](https://i.imgur.com/sy0bm0Y.png) * essentiel: Contient les bibliothèques ou les fichiers. * pim-openstackSDK_clouds.py: est le programme principale. ### TEST API ![](https://i.imgur.com/KXfUxfq.png) ## Conteneurisation Zun Pour vérifier que nous avons ce service implémenter ``` openstack --help ``` Grace à cette l'option help ou voit qu'on peut bien créer des contenneurs `openstack container create Create new container` ![](https://i.imgur.com/d92CVwB.png)