miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-11-07 18:20:33 +01:00
124 lignes
11 Kio
HTML
124 lignes
11 Kio
HTML
<!--
|
|
title: Ocicli
|
|
description: Installer un cluster Openstack avec ocicli sous Debian
|
|
published: true
|
|
date: 2021-05-10T13:42:27.269Z
|
|
tags:
|
|
editor: ckeditor
|
|
dateCreated: 2021-05-10T11:53:45.764Z
|
|
-->
|
|
|
|
<figure class="image image_resized" style="width:28.86%;"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/OpenStack%C2%AE_Logo_2016.svg/1200px-OpenStack%C2%AE_Logo_2016.svg.png" alt="OpenStack — Wikipédia"></figure>
|
|
<h1>Présentation</h1>
|
|
<p>OCI (OpenStack Cluster Installer) est un logiciel permettant de provisionner automatiquement des clusters OpenStack. Ce package installe une machine d'approvisionnement, qui utilise les composants ci-dessous:</p>
|
|
<ul>
|
|
<li>un serveur DHCP (isc-dhcp-server)</li>
|
|
<li>un serveur de démarrage PXE (tftp-hpa)</li>
|
|
<li>un serveur web (apache2)</li>
|
|
<li>un serveur Puppet</li>
|
|
</ul>
|
|
<p>Lors du premier des machines du cluster, un système Debian live est proposé en PXE par OCI, pour agir comme une image de découverte. Ce système remonte directement les caractéristiques matérielles à OCI. Les machines peuvent alors être installés avec Debian à partir de ce système, configurés avec un agent Puppet qui se connectera au master Puppet de OCI. Une fois Debian installé, le serveur redémarre et les services OpenStack sont provisionnés, en fonction du rôle du serveur dans le cluster.</p>
|
|
<p>OCI est entièrement intégré à Debian, y compris tous les modules Puppet. Après avoir installé le package OCI et ses dépendances, aucun autre soft n'est necessaire pour l'installation du cluster, ce qui signifie que si un miroir Debian local est disponible, l'installation du cluster OpenStack peut être effectuée complètement hors ligne.</p>
|
|
<p> </p>
|
|
<h2>Les services OpenStack installés</h2>
|
|
<p>Actuellement, OCI peut installer:</p>
|
|
<ul>
|
|
<li>Swift (avec des nœuds proxy dédiés en option)</li>
|
|
<li>Keystone</li>
|
|
<li>Cinder (backend LVM ou Ceph)</li>
|
|
<li>Glance (backend File, Swift ou Ceph, Swift peut être externalisé)</li>
|
|
<li>Heat</li>
|
|
<li>Horizon</li>
|
|
<li>Nova (avec prise en charge du GPU)</li>
|
|
<li>Neutron</li>
|
|
<li>Barbican</li>
|
|
<li>Octavia</li>
|
|
<li>Telemetry (Ceilometer, Gnocchi, Panko, Aodh)</li>
|
|
<li>Cloudkitty</li>
|
|
</ul>
|
|
<p>Des efforts sont actuellement en cours pour intégrer:</p>
|
|
<ul>
|
|
<li>Magnum</li>
|
|
<li>Designate</li>
|
|
</ul>
|
|
<p>De plus, OCI prend désormais en charge l'exécution de CephOSD sur les nœuds de calcul (ce que l'on appelle «hyper-converged») en tant qu'option pour chaque nœud de calcul. (compute nodes) </p>
|
|
<p>Tout cela avec de la haute disponibilité, en utilisant haproxy et corosync sur les nœuds de contrôleur pour tous les services.</p>
|
|
<p>Tous les services utilisent uniquement TLS, même au sein du cluster.</p>
|
|
<p>En règle générale, OCI vérifie quel type de nœuds fait partie du cluster et prend des décisions en fonction de celui-ci. Par exemple, s'il existe des nœuds OSD Ceph, OCI utilisera Ceph comme backend pour la sauvegarde Glance, Nova et Cinder. S'il y a des nœuds Cinder Volume, OCI les utilisera avec le backend LVM. S'il existe des nœuds Swiftstore, Swift sera utilisé pour les sauvegardes et les images Glance. S'il existe des nœuds Ceph OSD, mais pas de nœuds Ceph MON dédiés, les contrôleurs agiront comme des moniteurs Ceph. S'il existe des nœuds de calcul, Cinder, Nova et Neutron seront installés sur les nœuds de contrôleur. Etc…</p>
|
|
<p>Le nombre minimum de nœuds de contrôleur est de 3, bien qu'il soit possible, avec un peu de bidouille d'installer les 3 contrôleurs sur des machines virtuelles sur un seul serveur (bien sûr, perdre la fonctionnalité de haute disponibilité en cas de panne du matériel).</p>
|
|
<p> </p>
|
|
<h2>Qui est derrière ce projet ?</h2>
|
|
<p>OCI a été entièrement écrit par Thomas Goirand (zigo). Le travail est entièrement sponsorisé par Infomaniak Networks, qui l'utilise en production dans des clusters raisonnablement grands. Il y a eu quelques contributions sporadiques au sein d'Infomaniak, ainsi que quelques correctifs de contributeurs externes, mais aucune fonctionnalité majeure (pour le moment). Espérons que ce projet, au fil du temps, rassemblera plus de contributeurs.</p>
|
|
<p> </p>
|
|
<h2>Présentation vidéo</h2>
|
|
<p>Si vous souhaitez avoir une présentation rapide de ce que l'OCI peut faire, pour voir si cela répond à vos besoins, vous pouvez regarder la présentation faite pour le sommet OpenStack en novembre 2020. Ce n'est pas long (19 minutes) : <a href="https://www.youtube.com/watch?v=Q25jT2fYDjc">Youtube</a> </p>
|
|
<figure class="media">
|
|
<oembed url="https://www.youtube.com/watch?v=Q25jT2fYDjc"></oembed>
|
|
</figure>
|
|
<p> </p>
|
|
<h1>Installation</h1>
|
|
<h2>Exigences minimales</h2>
|
|
<p>OCI lui-même fonctionnera bien avec environ 20 Go de disque dur et quelques Go de RAM. Cependant, pour installer OpenStack, vous aurez besoin d'au moins 3 contrôleurs avec un minimum de 16 Go de RAM, 32 Go sont recommandés et le mieux est de 64 Go de RAM. Si vous voulez Ceph, un minimum de 3 Ceph OSD est nécessaire, cependant, nous ne parlons que lorsque votre cluster atteint 100 disques. La recommandation Ceph est qu'un serveur donné ne supprime pas plus de 10% de la capacité totale. Donc, 10 serveurs OSD au début, c'est bien. En ce qui concerne Swift, le nombre minimum de serveurs serait de 3, mais si l'un d'entre eux échoue, vous obtiendrez des délais d'attente. Il est donc probablement préférable de commencer avec au moins 6 nœuds de stockage Swift, et peut-être avec 2 proxies. Pour les autres ressources, c'est à vous de choisir : quelques compute nodes (nœuds de calcul), et probablement 2 nœuds de réseau et quelques nœuds de volume.</p>
|
|
<p>Si vous avez l'intention d'exécuter le package openstack-cluster-installer-poc pour faire du développement ou du test OCI dans un environnement virtualisé, nous vous recommandons un serveur unique avec 1 To de disque dur et 256 Go de RAM. Cette configuration est suffisante pour provisionner 19 VM sur lesquelles OpenStack sera installé. Il est possible de fonctionner avec moins, mais alors peu de nœuds seront disponibles, et vous devrez ajuster le nombre de serveurs dans <code>/etc/oci-poc/oci-poc.conf</code>.</p>
|
|
<p> </p>
|
|
<h2>Installation du paquet</h2>
|
|
<h3>Le dépôt du paquet</h3>
|
|
<p>Le paquet est soit disponible depuis Debian Sid / Buster, soit depuis les référentiels de backport stables d'OpenStack.</p>
|
|
<h3>Utilisation d'Extrepo</h3>
|
|
<p>La nouvelle (meilleure) façon d'utiliser les backports Debian Stable d'OpenStack est d'utiliser extrepo. Extrepo est disponible dans les buster-backports officiels. Voici comment installer OpenStack, par exemple (vous avez besoin du dépôt buster-backports dans votre <code>sources.list</code>) :</p>
|
|
<pre><code class="language-plaintext">apt-get install extrepo
|
|
extrepo enable openstack_wallaby
|
|
apt-get update
|
|
</code></pre>
|
|
<p>Consultez la documentation d'extrepo pour en savoir plus.</p>
|
|
<p> </p>
|
|
<h3>Configuration manuelle des dépôts Debian</h3>
|
|
<p>Si vous souhaitez utiliser Buster avec OpenStack Train, les dépôts ci-dessous doivent être ajoutés au fichier <code>sources.list</code> :</p>
|
|
<pre><code class="language-plaintext">deb http://buster-train.debian.net/debian buster-train-backports main
|
|
deb-src http://buster-train.debian.net/debian buster-train-backports main
|
|
|
|
deb http://buster-train.debian.net/debian buster-train-backports-nochange main
|
|
deb-src http://buster-train.debian.net/debian buster-train-backports-nochange main
|
|
</code></pre>
|
|
<p>Vous pouvez remplacer buster ci-dessus par n'importe quelle distribution stable Debian (au moment de l'écriture, seuls Stretch et Buster sont pris en charge), et pareil pour le nom de la version OpenStack du jour.</p>
|
|
<p>La clé du dépôt est disponible de cette façon :</p>
|
|
<pre><code class="language-plaintext">apt-get update
|
|
apt-get install --allow-unauthenticated -y openstack-backports-archive-keyring
|
|
apt-get update
|
|
</code></pre>
|
|
<p>Il existe également un miroir contenant TOUTES les versions d'OpenStack en un seul endroit : <a href="http://osbpo.debian.net/debian/">http://osbpo.debian.net/debian/</a></p>
|
|
<p> </p>
|
|
<h3>Installer le paquet</h3>
|
|
<p>Installez simplement <code>openstack-cluster-installer</code> avec :</p>
|
|
<pre><code class="language-plaintext">apt-get install openstack-cluster-installer</code></pre>
|
|
<p> </p>
|
|
<h3>Installer un serveur de base de données</h3>
|
|
<p>Pour MariaDB :</p>
|
|
<pre><code class="language-plaintext">apt-get install mariadb-server dbconfig-common</code></pre>
|
|
<p>Il est possible de créer la base de données et les informations d'identification à la main, ou de laisser OCI le gérer automatiquement avec <code>dbconfig-common</code>. Si APT s'exécute en mode non interactif, ou si pendant l'installation, l'utilisateur ne demande pas la gestion automatique de la base de données par <code>dbconfig-common</code>, voici comment créer la base de données : </p>
|
|
<pre><code class="language-plaintext">apt-get install openstack-pkg-tools
|
|
. /usr/share/openstack-pkg-tools/pkgos_func
|
|
PASSWORD=$(openssl rand -hex 16)
|
|
pkgos_inifile set /etc/openstack-cluster-installer/openstack-cluster-installer.conf database connection mysql+pymysql://oci:${PASSWORD}@localhost:3306/oci"
|
|
mysql --execute 'CREATE DATABASE oci;'
|
|
mysql --execute "GRANT ALL PRIVILEGES ON oci.* TO 'oci'@'localhost' IDENTIFIED BY '${PASSWORD}';"
|
|
</code></pre>
|
|
<p>Il faut alors s'assurer que la directive "<code>connection</code>" dans <code>/etc/openstack-cluster-installer/openstack-cluster-installer.conf</code> ne contient pas d'espaces avant et après le signe égal.</p>
|
|
<p> </p>
|
|
<h3>Configurer OCI</h3>
|
|
<p>Assurez-vous que la base de données est synchronisée (si c'est le cas, vous verrez que'il y a des erreurs dans le tableau) :</p>
|
|
<pre><code class="language-plaintext">apt-get install -y php-cli
|
|
cd /usr/share/openstack-cluster-installer ; php db_sync.php
|
|
</code></pre>
|
|
<p>Puis éditez <code>/etc/openstack-cluster-installer/openstack-cluster-installer.conf</code> et configurer les options comme vous le souhaitez (par exemple: changer les valeurs du réseau, etc.).</p>
|
|
<p> </p>
|
|
<h3>Générer l'autorité de certification racine d'OCI</h3>
|
|
<p>Pour supporter TLS, OCI utilise sa propre autorité de certification racine. Le certificat d'autorité de certification racine est distribué sur tous les nœuds du cluster. Pour créer l'autorité de certification racine initiale, il existe un script pour tout faire :</p>
|
|
<pre><code class="language-plaintext">oci-root-ca-gen</code></pre>
|
|
<p>À ce stade, vous devriez pouvoir naviguer dans l'interface Web d'OCI : <code>http://your-ip-address/oci/</code></p>
|
|
<p>Cependant, vous avez besoin d'un login / pass pour entrer. Il y a un utilitaire shell pour gérer vos noms d'utilisateur. Pour ajouter un nouvel utilisateur, procédez comme suit :</p>
|
|
<pre><code class="language-plaintext">oci-userdb -a mylogin mypassword</code></pre>
|
|
<p>Les mots de passe sont hachés en utilisant la fonction PHP <code>password_hash () </code>en utilisant l'algo BCRYPT.</p>
|
|
<p>De plus, OCI est capable d'utiliser un Radius externe pour son authentification. Cependant, vous devez toujours ajouter manuellement des connexions dans la base de données. Ce qui est ci-dessous insère un nouvel utilisateur qui a une entrée dans le serveur Radius :</p>
|
|
<pre><code class="language-plaintext">oci-userdb -r newuser@example.com</code></pre>
|
|
<p> </p>
|