# PIM Virtual Cloud Management **Auteurs :** ***Cedrigue DJIONGO, Daniel AFIVI, Oumar Barry, Eric et Ulrich*** [TOC] Dans le cadre de Projet Inter-Matière, nous avons choisi de mettre en place un cloud virtuel destiné au DevOps. ## Mise en place du cloud virtuel Nous commençons par la mise en place l'environnement matériels puis nous allons déployer les outils logiciels. ![](https://i.imgur.com/4rn3euc.png) Nous utilisons l'hyperviseur VirtualBox, Ubuntu Server sur les noeuds Openstack et Ubuntu Desktop pour les accès clients. * Nous avons besoins de 03 réseaux pour notre cloud : * Mgt Network : 192.168.100.0/24 (Administration du cloud virtuel) * Internal Network : 192.168.150.0/24 (Communications des Services) * External Network : 192.168.190.0/24 (Accès client) * Reseau NAT : 10.0.4.0/24 (Internet/VBox)) ![](https://i.imgur.com/5MNzEsf.png) * Nous avons les VM suivantes: ### **Controller Node :** 01 CPU, 1Go RAM, 10Go HHD, OS Ubuntu Server 16.04, 03 Cartes réseaux (**NAT** pour Adapter 1, **Mgt Network** pour Adapter 2, **External Network** pour Adapter 3) ![](https://i.imgur.com/3vd5jo9.png) * Modifier le fichier `/etc/hosts` comme suit: ![](https://i.imgur.com/yzW0Lck.png) * Modifier le fichier `/etc/network/interfaces` ![](https://i.imgur.com/e06MjWb.png) `sudio systemctl restart networking` * Mise à jour des dépots et des paquets installés: `sudo apt update -y && sudo apt upgrade -y ` * Installation du serveur de temps NTP pour l'horodatage et les synchronisations : `sudo apt install ntp -y` * **Configurer du serveur NTP en modifiant le fichier** `/etc/ntp.conf` ![](https://i.imgur.com/KD44msn.png) `sudo systemctl restart ntp && sudo ntpq -p` * **Installation du SGBD Mysql** ``` sudo apt install python3-mysqldb mysql-server -y sudo nano -l /etc/mysql/mysql.conf.d/mysqld.cnf ``` ![](https://i.imgur.com/hAdiCzp.png) * **Installation et configurationde RabbitMQ Server** `curl -fsSL https://github.com/rabbitmq/signing keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -` `sudo apt-get install apt-transport-https -y` `sudo apt-get install rabbitmq-server -y --fix-missing` `sudo rabbitmq-plugins enable rabbitmq_management` `http://controller:15672/` `sudo rabbitmqctl add_user openstack openstack` `sudo rabbitmqctl set_user_tags openstack administrator` * **Installation et configuration du service Keystone** * Installation : `sudo apt install keystone python3-openstackclient` * Configuration ``` sudo su - sudo nano -l /etc/keystone/keystone.conf ``` ![](https://i.imgur.com/ha9IhPm.png) ![](https://i.imgur.com/MuKFxEw.png) `sudo rm /var/lib/keystone/ keystone.db` * **Creation de la base de donnée et de l'utilisateur pour Keystone** ``` sudo mysql CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'openstack'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'openstack'; FLUSH PRIVILEGES; exit; ``` * Création des tables de la base de données *keystone* ` sudo -s /bin/sh -c "keystone-manage db_sync" keystone` ![](https://i.imgur.com/z8UXN40.png) * Génération d'un token de service (via OpenSSL) ``` openssl rand -hex 10 exit ``` * Copie du Token génénré dans le fichier /etc/keystone/keystone.conf ![](https://i.imgur.com/ZpH490r.png) `systemctl restart keystone` * Création des utilisateurs, des tenants et de roles ``` export OS_SERVICE_TOKEN=5613d2b8d46d8bb5859d export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0 keystone user-create --name=openstack --pass=openstack --email=adkot@estiam.com ``` ![](https://i.imgur.com/YetMlEP.png) ``` keystone role-create --name=adminRole ``` ![](https://i.imgur.com/RPPHGjv.png) ``` keystone tenant-create --name=pimTenant --descriptio="PIM Tenant" ``` ![](https://i.imgur.com/bBG7mJ8.png) ``` keystone user-role-add --user=openstack --tenant=pimTenant --role=adminRole ``` * Creation d'un services ``` keystone service-create --name=keystone --type=identity --description="Openstack Identity" ``` ![](https://i.imgur.com/FiHmVtG.png) * Ajout d'un API Endpoint au service créé ``` keystone endpoint-create --service-id=$(keystone service-list | awk '/ identity / {print$2}') --publicurl=http://controller:5000/v2.0 --internalurl=http://controller:5000/v2.0 --admin=http://controller:35357/v2.0 0 ``` ![](https://i.imgur.com/xgaRaLO.png) * Mise en place de neutron * Créer la base de donnée nommée neutron et un utilisateur nommée neutron ayant tout les droits sur cette base de données * Créer un utilisateur dans keystone pour ce service ``` sudo keystone user-create --name neutron --pass openstanck --email pim@estiam.com keystone user-role-add --user neutron --tenant service --role openstack keystone service-create --name neutron --type network --description "Openstack Networking" keystone endpoint-create --service-id $(keystone service-list | awk '/ network / {print $2}') --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 sudo apt install neutron-server neutron-plugin-ml2 -y ``` * Ouvrir le fichier et modifier les lignes suivantes: ``` connection = mysql://neutron:openstack@controller/neutron auth_strategy = keystone rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = controller rabbit_password = openstack [keystone_authtoken] auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = a8bb88b2929c419c92a8a136db0b1dc7 admin_user = neutron admin_password = openstack #signing_dir = $state_path/keystone-signing auth_url = http://controller:5000 ``` * Ouvrir et configurer le fichier `/etc/neutron/plugins/ml2/ml2_conf` ``` [ml2] type_drivers = gre tenant_networks_types = gre mechanism_drivers = openvswitch [ml2_type_gre] tunnel_id_ranges = 1:1000 [securitygroup] firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptables$ enable_security_group = true ``` ### **Network Node** * Caractéristique de la machine: 01 CPU, 1Go RAM, 05Go HHD ![](https://i.imgur.com/y5jQJa3.png) * Modifier le fichier `/etc/hosts` comme suit: ![](https://i.imgur.com/yzW0Lck.png) * Modifier le fichier `/etc/netplan/00-installer-config.yaml` ![](https://i.imgur.com/INVJDK9.png) `sudo apt update -y && sudo apt upgrade -y ` * Installation du serveur de temps NTP pour l'horodatage et les synchronisations : `sudo apt install ntp -y` * Configurer du client NTP `/etc/ntp.conf` ![](https://i.imgur.com/vYzUZ7r.png) `sudo systemctl restart ntp` `ntpq -c peers` ![](https://i.imgur.com/AHGsQGh.png) * Installation du connecteur pyhton pour le SGBD Mysql `sudo apt install python3-mysqldb -y` ### **Compute Node** : 01 CPU, 1Go RAM, 10Go HHD![](https://i.imgur.com/EXcMCjc.png) * Modifier le fichier `/etc/hosts` comme suit: ![](https://i.imgur.com/yzW0Lck.png) * Modifier le fichier `/etc/netplan/00-installer-config.yaml` ![](https://i.imgur.com/tcEvBb7.png) `sudo apt update -y && sudo apt upgrade -y ` * Installation du serveur de temps NTP pour l'horodatage et les synchronisations : `sudo apt install ntp -y` * Configurer du client NTP `/etc/ntp.conf` ![](https://i.imgur.com/vYzUZ7r.png) `sudo systemctl restart ntp` `ntpq -c peers`![](https://i.imgur.com/bFmIuiN.png) * Installation du connecteur pyhton pour le SGBD Mysql `sudo apt install python3-mysqldb -y` ### **Storage Node : CINDER** : 01 CPU, 1Go RAM, 20Go HHD * La mise en place de ce noeud s'appuie sur les ressources précedement déployé et fonctionnelles comme Keystone * Installation des logiciels d'administration sur le noeuds controller ` sudo apt install cinder-api cinder-scheduler -y` * Modifier le fichier de configuration ` sudo nano /etc/cinder/cinder.conf` ![](https://i.imgur.com/TlBcLEZ.png) * Créer la base de données cinder ainsi que l'utilisateur cinder qui aura tout les droits sur cette base de données ``` create database cinder; grant all privileges on cinder.* to 'cinder'@'localhost' identified by 'openstack'; grant all privileges on cinder.* to 'cinder'@'%' identified by 'openstack' su -s /bin/sh -c "cinder-manage db sync" cinder keystone user-create --name=cinder --pass openstack --email cinder@estiam.com keystone user-role-add --user cinder --tenant service --role admin keystone service-create --name cinder --type volume --description "Openstack Block Storage" keystone endpoint-create --service-id $(keystone service-list | awk '/ volume / {print $2}') --publicurl http://controller:8776/v1/%\(tenant_id\)s --adminurl http://controller:8776/v1/%\(tenant_id\)s --internalurl http://controller:8776/v1/%\(tenant_id\)s ``` ![](https://i.imgur.com/wGQuz2e.png) ![](https://i.imgur.com/KB3i0ht.png) * Nous avons créé un autre espace de stockage de type bloc ![](https://i.imgur.com/qM272jF.png) ``` keystone endpoint-create --service-id $(keystone service-list | awk '/ volume2 / {print $2}') --publicurl http://controller:8776/v2/%\(tenant_id\)s --adminurl http://controller:8776/v2/%\(tenant_id\)s --internalurl http://controller:8776/v2/%\(tenant_id\)s ``` * Relancer les services cinder-api et cinder-scheduler ``` systemctl enable cinder-api systemctl enable cinder-scheduler systemctl restart cinder-api systemctl restart cinder-scheduler ``` * Configuration et administration du noeud cinder * Installation des paquets:`sudo apt install lvm2 cinder-api tgt targetcli-fb -y` * Visualisation des périphériques de stockage : `lshw -C disk` ![](https://i.imgur.com/vKJYHrE.png) * Initialisation de la partition LVM : `pvcreate /dev/sdb` * Création des volumes logiques : `vgcreate cinder-volume /dev/sdb` * Modifier le fichier de configuration retirant le commentaire sur cette ligne: ` filter = [ "a|.*|" ]` * Installer le paquets: cinder-volume :`sudo apt install cinder-volume -y` et modifier le fichier de configuration `/etc/cinder/cinder.conf` ![](https://i.imgur.com/dZBqy5U.png)`systemctl restart cinder-volume`