Ce sera un tutoriel complet sur l’installation d’OpenStack (configuration minimale). J’aimerais beaucoup essayer le système d’exploitation cloud open source, et OpenStack est l’une des solutions sérieuses, utilisée par de nombreuses institutions et entreprises. Le Cern fait partie des utilisateurs et Red Hat est un fervent partisan d’OpenStack.
Soyez conscient: Même après ce tutoriel « repassé », vous serez accueilli avec des erreurs après avoir tout configuré, et vous devrez faire plus de recherches pour que votre OpenStack fonctionne correctement. Je vais écrire sur certains des problèmes dans quelques guides plus rapides.
OpenStack a également la réputation d’être compliqué à installer et à entretenir et peu stable. J’ai beaucoup lu sur le sujet OpenStack, j’ai parcouru beaucoup de documentation et c’est le résultat. Cela couvrira l’installation manuelle de la libération du train, et cette vaste série couvrira tous les composants de l’installation minimale d’OpenStack (ne laissez pas ce minimum vous tromper, il y a beaucoup à faire).
Il existe quelques différences entre la documentation officielle d’OpenStack et le déploiement lui-même, donc ce tutoriel devrait également vous aider à économiser d’innombrables heures de recherche d’erreurs et de déchiffrement des erreurs.La procédure est fastidieuse, mais je la recommande vivement, car à la fin de celle-ci, vous aurez une bonne compréhension des principes de base d’OpenStack.
En savoir plus sur le sujet la prochaine fois, mettons-nous au travail.
Il y a une courbe d’apprentissage, et d’après ce que j’ai lu, je crois qu’OpenStack est en ce moment une solution stable pour vos besoins en cloud.
Mais, nous verrons en cours de route, plongeons dedans.
Prérequis
J’utiliserai CentOS 7 pour mes installations (v.1908). Je vais créer mon laboratoire dans VMware Fusion / Workstation. L’installation initiale de CentOS est minimale sans interface graphique ni aucun ajout.
Toutes mes machines virtuelles auront des cœurs 4CPU et 8 Go de RAM avec un minimum de disque dur de 120 Go.Vous pouvez trouver les exigences minimales ici – https://docs.openstack.org/install-guide/overview.html
Prenez note des exigences supplémentaires des composants réseau et lecteur et ajoutez-les en conséquence à votre LABORATOIRE.

Mon LABORATOIRE a accès à Internet.
Je suivrai la documentation d’OpenStack en cours de route – https://docs.openstack.org/install-guide/common/conventions.html
Je vais installer la génération de train, qui est la version actuelle. Je vais commencer par le nœud de contrôleur 1 et le nœud de calcul 1.
Le réseau du fournisseur sera le suivant (vous avez besoin d’un accès Internet pour cette configuration) :
10.0.0.1/24 – passerelle
10.0.0.11/24 – Nœud contrôleur 1
10.0.0.31/24 – Nœud de calcul 1
10.0.0.41/24 – Nœud de stockage de blocs 1
10.0.0.51/24 – Nœud de stockage d’objets 1
10.0.0.52 /24 – Nœud de stockage d’objets 2
Je créerai également plus tard un réseau dans la plage 203.0.113.0/24, qui sera réseau de gestion.
Voici également les noms et adresses IP des machines (vous en aurez également besoin dans le fichier hosts):
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.41 block1
10.0.0.51 object1
10.0.0.52 object2
Changer le nom d’hôte de la machine
Pour chaque machine du laboratoire, changez le nom d’hôte. Je vais changer mes noms d’hôte pour les noms que j’ai spécifiés juste au-dessus de cela.
La commande est ci-dessous, le contrôleur est le nom de l’une des machines, changez-le à ce que vous jugez bon.
sudo hostnamectl set-hostname controller

Voici ce que le changement prend en charge après le redémarrage.

J’ai nommé mes machines – controller, compute1, block1, object1, object2.
Configurer la résolution du nom
Modifiez votre interface réseau située dans /etc/sysconfig/network-scripts
Dans mon cas, j’ai l’interface ifcfg-ens33
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
J’ai édité les lignes suivantes (exemple de machine de contrôleur):
BOOTPROTO=noneIPADDR=10.0.0.11PREFIX=24GATEWAY=10.0.0.1DNS1=10.0.0.1DNS2=8.8.8.8ONBOOT=yesIPV6INIT=no
Voici à quoi cela ressemble

Redémarrez la machine après avoir défini la configuration ip. Répétez ces étapes pour toutes les machines du laboratoire (définissez bien sûr une adresse IP différente pour chacune).
Mise à jour de l’installation de CentOS
Avant d’aller plus loin, nous mettrons à jour nos installations de CentOS. De cette façon, nous confirmerons également notre connectivité Internet.
sudo yum update -y
Edit Hosts file
Encore une fois, nous devons le faire sur chaque machine. Nous allons éditer le fichier hosts, afin que les machines puissent se voir par leur nom.
sudo vi /etc/hosts/
Voici ce que nous devons entrer
10.0.0.11 controller10.0.0.31 compute110.0.0.41 block110.0.0.51 object110.0.0.52 object2
Voici à quoi ressemble mon fichier

Si nous avons tout fait correctement, nous devrions maintenant pouvoir effectuer un ping du contrôleur vers compute1 et vice versa par le nom. (Assurez-vous que votre ping est disponible via le pare-feu)


Fonctionne.Entrez ces valeurs dans chaque fichier hosts sur chaque machine et assurez-vous que vous pouvez envoyer un ping à chaque machine et tester à partir de chaque machine.
Setup service NTP
Une mesure précise du temps est importante, nous allons donc définir le serveur de temps et y attacher des clients. Le serveur de temps sera notre serveur contrôleur et client toutes les autres machines.
Configuration du serveur NTP
Nous le ferons sur notre serveur contrôleur.
sudo yum install chrony -y
Activer et démarrer le service en exécutant
sudo systemctl start chronydsudo systemctl enable chronyd
Vous pouvez également vérifier l’état du service en exécutant
systemctl status chronyd
Ensuite, nous allons éditer /etc/chrony.fichier de configuration
sudo vi /etc/chrony.conf
Pour ce tutoriel, je laisserai les serveurs centos NTP par défaut. Sinon, si vous souhaitez éditer des serveurs NTP, vous pouvez, en ajoutant la commande ci-dessous (Remplacez NTP_SERVER par le nom du serveur NTP)
server NTP_SERVER iburst
Nous devrons également activer l’accès pour nos clients NTP à partir du réseau local en décommentant et en modifiant la ligne suivante
allow 10.0.0.0/24
Voici ma configuration. La partie verte est l’endroit où vous entrerez dans vos serveurs NTP, et la partie rouge est activée depuis notre réseau local pour la synchronisation temporelle.

Redémarrez le serveur ou le service chrony en tapant
sudo systemctl restart chronyd
Nous vérifierons si notre serveur synchronise l’heure en tapant
p>
chronyc sources

Le service fonctionne pour moi.
Nous l’activerons également via le pare-feu
sudo firewall-cmd --permanent --add-service=ntpsudo firewall-cmd --reload
Configuration des clients NTP
Ces étapes doivent être effectuées sur le reste des machines.
Encore une fois, nous devons installer chrony
sudo yum install chrony
Activer et démarrer le service NTP
sudo systemctl start chronydsudo systemctl enable chronyd
Après cela, nous devons à nouveau éditer /etc/chrony.conf
sudo vi /etc/chrony.conf
Vous devrez supprimer tous les serveurs NTP et entrer
server controller iburst
Laissez tout tel quel et fermez le fichier. Voici à quoi ressemble la mienne.

Encore une fois, redémarrez le service NTP
sudo systemctl restart chronyd
Et permet de vérifier si cela fonctionne
chronyc sources

Cela fonctionne, le client communique avec le serveur NTP.
Et, sur le serveur NTP si nous entrons la commande
chronyc clients
Nous verrons que compute1 est un client NTP

div>
Répétez l’étape sur le reste des machines.
Paquets OpenStack
Ces étapes doivent être effectuées sur tous les nœuds. Si vous n’avez pas mis à jour votre installation CentOS, et désactivez également le dépôt EPEL.
!!!///UNIQUEMENT POUR LES INSTALLATIONS DE RED HAT, les CENTOS IGNORENT CETTE
subscription-manager repos --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms
Exécutez la commande suivante (nous installons la version du train)
sudo yum install centos-release-openstack-train


La commande suivante que nous allons exécuter est
sudo yum upgrade
Redémarrez après, et sélectionnez nouveau noyau pour l’activer.
La commande suivante sera
sudo yum install python-openstackclient
Et enfin, nous devons intégrer notre installation OpenStack dans SELinux
sudo yum install openstack-selinux
Base de données SQL
La base de données sera installée sur le nœud du contrôleur.Nous allons installer MariaDB.
sudo yum install mariadb mariadb-server python2-PyMySQL
Une fois l’installation terminée, nous devrons éditer un openstack.conf situé dans /etc/mon.cnf.d
sudo vi /etc/my.cnf.d/openstack.conf
Nous allons créer une section mysqld avec les informations suivantes (assurez-vous que l’adresse de liaison est l’adresse de votre contrôleur)
bind-address = 10.0.0.11default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8
Voici à quoi cela ressemble dans mon cas

Activer et démarrer MariaDB
sudo systemctl enable mariadb.servicesudo systemctl start mariadb.service
Nous ajouterons également une exception de pare-feu
sudo firewall-cmd --permanent --add-service=mysqlsudo firewall-cmd --reload
Enfin, nous sécuriserons notre installation et définirons le mot de passe pour le sql root l’utilisateur
sudo mysql_secure_installation
File d’attente de messages
OpenStack utilise la file d’attente de messages pour coordonner les opérations et le statut entre les services. Il fonctionne généralement sur le contrôleur, nous l’installerons donc sur le contrôleur. Nous installerons RabbitMQ
Installation
sudo yum install rabbitmq-server
Démarrer et activer le service
sudo systemctl enable rabbitmq-server.servicesudo systemctl start rabbitmq-server.service
Ajoutez-y un utilisateur openstack. Remplacez RABBIT_PASS par votre mot de passe.
sudo rabbitmqctl add_user openstack RABBIT_PASS
Définir les autorisations
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Ce sont des paramètres de pare-feu pour RabbitMQ
sudo firewall-cmd --zone=public --permanent --add-port=4369/tcp --add-port=25672/tcp --add-port=5671-5672/tcp --add-port=15672/tcp --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcpsudo firewall-cmd --reload
Commande SELinux facultative
setsebool -P nis_enabled 1
Memcached
Le mécanisme d’authentification du service d’identité pour les services utilise Memcached pour mettre en cache les jetons. Le service memcached s’exécute généralement sur le nœud du contrôleur, je vais donc l’installer sur le nœud du contrôleur.
Installation
sudo yum install memcached python-memcached
Next, we will edit /etc/sysconfig/memcached
sudo vi /etc/sysconfig/memcached
controller should be added to OPTIONS line, like this
OPTIONS="-l 127.0.0.1,::1,controller"

At last, we will enable and start service
sudo systemctl enable memcached.servicesudo systemctl start memcached.service
Optional firewall settings for memcached
sudo firewall-cmd --new-zone=memcached --permanentsudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=10.0.0.0/24 --permanentsudo firewall-cmd --reload
Etcd
Short explanation from docs.openstack.les services org-OpenStack peuvent utiliser Etcd, un magasin de clés-valeurs fiable et distribué pour le verrouillage de clés distribué, le stockage de la configuration, le suivi de la vie du service et d’autres scénarios.
Etcd doit être installé sur le nœud du contrôleur.
Installation
sudo yum install etcd
Ensuite, nous allons éditer /etc/etcd/etcd.conf
sudo vi /etc/etcd/etcd.conf
Vous devez éditer un fichier comme celui-ci et modifier les valeurs ci-dessous pour correspondre à l’adresse IP ou au nom de votre contrôleur.
#ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"ETCD_NAME="controller"#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_CLUSTER_STATE="new"
Voici à quoi ressemble mon fichier

Activer et démarrer le service
sudo systemctl enable etcdsudo systemctl start etcd
Paramètres de pare-feu supplémentaires
sudo firewall-cmd --add-port={2379,2380}/tcp --permanentsudo firewall-cmd --reload
Donc, nous avons plus ou moins « terminé » avec la partie initiale, nous allons maintenant effectuer un déploiement minimal pour Train.
Déploiement minimal pour Train
Ok, nous avons donc réussi jusqu’à présent. Nous allons maintenant effectuer un déploiement de service minimal pour le train. Plus de détails peuvent être trouvés ici – https://docs.openstack.org/install-guide/openstack-services.html
Les services doivent être installés dans l’ordre spécifié, comme illustré ci-dessous

Depuis ce tutoriel ça va déjà un peu long, je vais le terminer ici, et couvrir chacun des services ci-dessus dans un tutoriel séparé.
La chose importante est de faire tous les services dans l’ordre exact tels qu’ils sont ci-dessous.
Voici les liens
- Service d’identité – installation keystone pour Train
2. Service d’image – installation de coup d’œil pour le train
3. Service de placement – installation de placement pour train
4. Service de calcul – installation nova pour le train
5. Service de mise en réseau – installation de neutrons pour Train
Nous vous conseillons d’installer également les composants suivants après avoir installé les services de déploiement minimal :
6. Tableau de bord – installation horizon pour Train
7. Service de stockage de blocs – installation de parpaings pour train
8. Object Storage service – swift installation for Train
Additional links for after installation for errors you may encounter:
Disclaimer