Par Ghulam Qadir, auteur de Tech Share d’Alibaba Cloud. Tech Share est le programme d’incitation d’Alibaba Cloud pour encourager le partage des connaissances techniques et des meilleures pratiques au sein de la communauté du cloud.
OpenStack est une plateforme logicielle gratuite et open-source qui fournit IaaS (infrastructure-as-a-service) pour les clouds publics et privés.
La plateforme OpenStack se compose de plusieurs projets interreliés qui contrôlent le matériel, le stockage, les ressources réseau d’un centre de données, tels que : Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration and Database.
Bien que la fonction principale d’OpenStack soit de fournir une plateforme IaaS, elle est utilisée comme DBaaS (database-as-a-service), la construction de clusters Hadoop, l’orchestration de conteneurs et bien plus encore. L’administration de ces composants peut être gérée par l’interface web ou avec l’aide de la ligne de commande OpenStack.
Ce tutoriel vous montrera comment vous pouvez déployer votre propre infrastructure de cloud privé avec OpenStack installé sur un seul nœud en utilisant les dépôts rdo, bien que le déploiement puisse être réalisé sur plusieurs nœuds. Nous allons déployer ce service sur des instances Alibaba Cloud Elastic Compute Service (ECS) avec CentOS 7.
- Hostname = openstack.example.com
- Adresse IP = 192.168.1.40
- netmask = 255.255.255.0
- Gateway = 192.168.1.1
- DNS = 192.168.1.254
Prérequis
- Vous devez avoir activé Alibaba Cloud Elastic Compute Service (ECS) et vérifié votre méthode de paiement valide. Si vous êtes un nouvel utilisateur, vous pouvez obtenir un compte gratuit dans votre compte Alibaba Cloud. Si vous ne savez pas comment configurer votre instance ECS, vous pouvez vous référer à ce tutoriel ou au guide de démarrage rapide.
- Vous devez configurer le nom d’hôte de votre serveur.
- Accès à la console VNC dans votre Alibaba Cloud ou au client SSH installé sur votre PC.
Après avoir rempli les conditions préalables, connectez-vous en tant qu’utilisateur root avec votre nom d’utilisateur root & mot de passe via un client SSH (par exemple Putty) ou la console VNC disponible dans le tableau de bord de votre compte Alibaba Cloud.
Vérifiez que votre système dispose d’au moins 16 Go de RAM et d’un processeur avec un support VT. Vérifiez le support VT en utilisant la commande ci-dessous.
egrep --color 'vmx|svm' /proc/cpuinfo | wc –l
Sortie : (ne doit pas être zéro)
2
Configurations initiales du système
- Avant de commencer à préparer le nœud afin de déployer votre propre infrastructure de cloud virtuel, connectez-vous d’abord avec le compte root et assurez-vous que le système est à jour.
Vérifiez que votre machine dispose de la dernière version de CentOS 7 sur la machine.
yum -y update
- Puis, lancez la commande ss -tulpn pour lister tous les services en cours d’exécution.
Ss -tulpn
Identifiez maintenant les services inutiles, arrêtez-les, désactivez-les et supprimez-les. Principalement Postfix, NetworkManager et Firewalld. Après cela, le seul service qui serait en cours d’exécution sur votre machine linux ne devrait être que sshd.
# systemctl stop postfix firewalld NetworkManager # systemctl disable postfix firewalld NetworkManager # systemctl mask NetworkManager # yum remove postfix NetworkManager NetworkManager-libnm
Désactivez de manière permanente la politique Selinux sur votre machine linux en exécutant les commandes suivantes. Editez également le fichier /etc/selinux/config et modifiez SELINUX de enforcing à disabled comme le montre l’image ci-dessous.
# setenforce 0 # getenforce # vi /etc/selinux/config
L’étape suivante en utilisant la commande hostnamectl pour définir le nom d’hôte de votre système Linux. Remplacez la variable FQDN en conséquence.
# hostnamectl set-hostname cloud.centos.lan
Enfin, installez ntpdate afin de synchroniser l’heure avec un serveur NTP.
# yum install ntpdate
Installer OpenStack dans CentOS et RHEL
OpenStack sera déployé sur votre nœud à l’aide du paquet PackStack fourni par le dépôt rdo (distribution RPM d’OpenStack).
Pour activer les dépôts rdo sur RHEL 7, exécutez la commande ci-dessous.
# yum install https://www.rdoproject.org/repos/rdo-release.rpm
Sur CentOS 7, le dépôt Extras inclut le RPM qui active le dépôt OpenStack. Extras est déjà activé, vous pouvez donc facilement installer le RPM pour configurer le dépôt OpenStack :
# yum install -y centos-release-openstack-mitaka # yum update –y
Installons le paquet Packstat sur votre machine linux en utilisant la commande suivante :
# yum install openstack-packstack
À l’étape suivante, générez un fichier de réponse pour Packstack avec les configurations par défaut qui sera plus tard édité avec les paramètres requis afin de déployer une installation autonome d’Openstack (nœud unique).
Le fichier sera nommé après l’horodatage de la journée en cours lors de sa génération (jour, mois et année).
# packstack --gen-answer-file='date +"%d.%m.%y"'.conf # ls
Maintenant, éditez le fichier de réponse avec votre éditeur de texte préféré.
vi 26.07.18.conf
et remplacez les paramètres suivants pour qu’ils correspondent aux valeurs ci-dessous. Pour être sûr, remplacez les champs de mots de passe en conséquence.
CONFIG_NTP_SERVERS=0.ro.pool.ntp.org
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user
Accéder au tableau de bord OpenStack via HTTP avec SSL activé.
CONFIG_HORIZON_SSL=y
Le mot de passe racine du serveur MySQL.
CONFIG_MARIADB_PW=mypassword1234
Après avoir terminé l’édition, enregistrez et fermez le fichier. De même, ouvrez le fichier de configuration du serveur SSH et décommentez la ligne PermitRootLogin en supprimant le hashtag avant comme illustré sur la capture d’écran ci-dessous.
# vi /etc/ssh/sshd_config
Puis redémarrez le service SSH pour refléter les changements.
# systemctl restart sshd
Démarrer l’installation d’Openstack en utilisant le fichier de réponse Packstack
Finalement, démarrer le processus d’installation d’Openstack via le fichier de réponse édité ci-dessus en exécutant la syntaxe de commande ci-dessous :
# packstack --answer-file 13.04.16.conf
Une fois l’installation des composants OpenStack terminée avec succès, le programme d’installation affichera quelques lignes avec les liens des tableaux de bord locaux pour OpenStack et Nagios et les informations d’identification requises déjà configurées ci-dessus afin de se connecter sur les deux panneaux.
Les informations d’identification sont également stockées sous votre répertoire personnel dans le fichier keystonerc_admin.
Si pour certaines raisons le processus d’installation se termine par une erreur concernant le service httpd, ouvrez le fichier /etc/httpd/conf.d/ssl.conf et assurez-vous de commenter la ligne suivante comme illustré ci-dessous.
#Listen 443 https
Puis redémarrez le démon Apache pour appliquer les changements.
# systemctl restart httpd.service
Note : Dans le cas où vous ne pouvez toujours pas naviguer sur le panneau web Openstack sur le port 443, redémarrez le processus d’installation depuis le début avec la même commande émise pour le déploiement initial.
# packstack --answer-file /root/26.07.18.conf
Accéder à distance au tableau de bord OpenStack
Afin d’accéder au panneau web OpenStack à partir d’un hôte distant dans votre réseau local, naviguez vers l’adresse IP ou le FQDN/le tableau de bord de votre machine via le protocole HTTPS.
En raison du fait que vous utilisez un certificat auto-signé émis par une autorité de certification non fiable, une erreur devrait s’afficher sur votre navigateur.
Acceptez l’erreur et connectez-vous au tableau de bord avec l’utilisateur admin et le mot de passe défini sur le paramètre CONFIG_KEYSTONE_ADMIN_PW du fichier de réponses défini ci-dessus.
https://192.168.1.40/dashboard
Alternativement, si vous avez opté pour l’installation du composant Nagios pour OpenStack, vous pouvez parcourir le panneau web Nagios à l’URI suivant et vous connecter avec les informations d’identification configurées dans le fichier de réponse.
https://192.168.1.40/nagios
Configuration
OpenStack est une collection de composants de projets open source qui permettent de mettre en place des services cloud. Chaque composant utilise des techniques de configuration similaires et un cadre commun pour les options des fichiers INI.
Ce guide rassemble de multiples références et options de configuration pour les composants OpenStack suivants :
- Service bare metal
- Service de stockage en bloc
- Service de calcul
- Tableau de bord
- Service de base de données
- Service de traitement des données
- Service d’identité
- Service d’image
- Message. service
- Service de réseautage
- Service de stockage d’objets
- Service d’orchestration
- Systèmes de fichiers partagés
- Service de télémétrie
OpenStack utilise le format de fichier INI pour les fichiers de configuration. Un fichier INI est un simple fichier texte qui spécifie les options sous forme de paires clé=valeur, regroupées en sections. La section DEFAULT contient la plupart des options de configuration. Les lignes commençant par un signe dièse (#) sont des lignes de commentaires. Par exemple :
# Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) debug = true # The SQLAlchemy connection string used to connect to the # database (string value) connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
Les options peuvent avoir différents types de valeurs. Les commentaires dans les exemples de fichiers de configuration les mentionnent toujours et les tableaux mentionnent la valeur Opt comme premier élément comme (BoolOpt) Toggle….. Les types suivants sont utilisés par OpenStack:
Valeur booléenne (BoolOpt)
Active ou désactive une option. Les valeurs autorisées sont true et false.
# Enable the experimental use of database reconnect on # connection lost (boolean value) use_db_reconnect = false
valeur en virgule flottante (FloatOpt)
Un nombre en virgule flottante comme 0,25 ou 1000.
# Sleep time in seconds for polling an ongoing async task # (floating point value) task_poll_interval = 0.5
valeur entière (IntOpt)
Un nombre entier est un nombre sans composante fractionnaire, comme 0 ou 42.
# The port which the OpenStack Compute service listens on. # (integer value) compute_port = 8774
Adresse IP (IPOpt)
Une adresse IPv4 ou IPv6.
# Address to bind the server. Useful when selecting a particular network # interface. (ip address value) bind_host = 0.0.0.0
Paires clé-valeur (DictOpt)
Une paire clé-valeur, également appelée dicton. Les paires clé-valeur sont séparées par des virgules et un deux-points est utilisé pour séparer la clé et la valeur. Exemple : clé1:valeur1,clé2:valeur2.
# Parameter for l2_l3 workflow setup. (dict value) l2_l3_setup_params = data_ip_address:192.168.200.99, \ data_ip_mask:255.255.255.0,data_port:1,gateway:192.168.200.1,ha_port:2
Liste de valeurs (ListOpt)
Représente des valeurs d’autres types, séparées par des virgules. À titre d’exemple, ce qui suit définit allowed_rpc_exception_modules à une liste contenant les quatre éléments oslo.messaging.exceptions, nova.exception, cinder.exception, et exceptions:
# Modules of exceptions that are permitted to be recreated # upon receiving exception data from an rpc call. (list value) allowed_rpc_exception_modules = oslo.messaging.exceptions,nova.exception
multi-valeur (MultiStrOpt)
Une option multi-valeur est une valeur de chaîne et peut être donnée plus d’une fois, toutes les valeurs seront utilisées.
# Driver or drivers to handle sending notifications. (multi valued) notification_driver = nova.openstack.common.notifier.rpc_notifier notification_driver = ceilometer.compute.nova_notifier
valeur de port (PortOpt)
Un numéro de port TCP/IP. Les ports peuvent aller de 1 à 65535.
# Port to which the UDP socket is bound. (port value) # Minimum value: 1 # Maximum value: 65535 udp_port = 4952
valeur de la chaîne (StrOpt)
Les chaînes peuvent être éventuellement entourées de guillemets simples ou doubles.
# Enables or disables publication of error events. (boolean value) publish_errors = false # The format for an instance that is passed with the log message. # (string value) instance_format = " "
Sections
Les options de configuration sont regroupées par section. La plupart des fichiers de configuration prennent en charge au moins les sections suivantes :
Contient la plupart des options de configuration. Si la documentation d’une option de configuration ne précise pas sa section, supposez qu’elle apparaît dans cette section.
Options de configuration pour la base de données qui stocke l’état du service OpenStack.
Substitution
Le fichier de configuration prend en charge la substitution de variables. Après avoir défini une option de configuration, elle peut être référencée dans des valeurs de configuration ultérieures lorsque vous la faites précéder d’un $, comme $OPTION.
L’exemple suivant utilise les valeurs de rabbit_host et rabbit_port pour définir la valeur de l’option rabbit_hosts, dans ce cas comme contrôleur:5672.
# The RabbitMQ broker address where a single node is used. # (string value) rabbit_host = controller # The RabbitMQ broker port where a single node is used. # (integer value) rabbit_port = 5672 # RabbitMQ HA cluster host:port pairs. (list value) rabbit_hosts = $rabbit_host:$rabbit_port
Pour éviter la substitution, utilisez
$$, il est remplacé par un seul $. Par exemple, si votre mot de passe LDAP DNS est $xkj432, spécifiez-le, comme suit :
ldap_dns_password = $$xkj432
Le code utilise la chaîne Python. Template.safe_substitute() pour mettre en œuvre la substitution de variable. Pour plus de détails sur la façon dont la substitution de variable est résolue.
Whitespace
Pour inclure des espaces blancs dans une valeur de configuration, utilisez une chaîne entre guillemets. Par exemple :
ldap_dns_passsword='a password with spaces'
Définir un emplacement alternatif pour un fichier de configuration
La plupart des services et les clients de la ligne de commande -manage chargent le fichier de configuration. Pour définir un emplacement alternatif pour le fichier de configuration, passez le paramètre –config-file CONFIG_FILE lorsque vous démarrez un service ou appelez une commande -manage.
Conclusion
Nous avons fait la démonstration de l’installation d’OpenStack sur Red Hat, CentOS et Fedora Linux. Maintenant, vous pouvez configurer votre propre environnement de cloud privé sur Alibaba Cloud Elastic Compute Service (ECS) facilement avec OpenStack.