Table des matières
- Introduction
- Prérequis
- Configuration de l’environnement
- Installer et configurer les composants OpenStack
- Keystone (Service d’identité)
- Glance (Service d’image)
- Nova (Service de calcul)
- Neutron (Service de réseau)
- Cinder (Service de stockage en bloc)
- Horizon (Tableau de bord)
- Vérification et dépannage
- Conclusion
1. Introduction
OpenStack est une plateforme open-source utilisée pour construire et gérer des clouds publics et privés. Ce guide vous guide à travers une installation manuelle d’OpenStack sur un serveur Linux.
2. Prérequis
Assurez-vous que votre système répond aux exigences suivantes :
- Une installation propre d’une distribution Linux prise en charge (par exemple, Ubuntu 20.04 LTS ou CentOS 8).
- Au moins 8 Go de RAM et 2 CPU.
- Accès root ou sudo.
- Paramètres réseau correctement configurés.
3. Configuration de l’environnement
Mettre à jour et mettre à niveau votre système
$ sudo apt update && sudo apt upgrade -y
Installer les paquets essentiels
$ sudo apt install -y python3-pip python3-dev libffi-dev gcc libssl-dev
4. Installer et configurer les composants OpenStack
a. Keystone (Service d’identité)
- Installer Keystone
$ sudo apt install -y keystone
- Configurer Keystone
Modifier le fichier /etc/keystone/keystone.conf
:
$ sudo nano /etc/keystone/keystone.conf
Définissez les valeurs suivantes :
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[token]
provider = fernet
- Peupler la base de données du service d’identité
$ sudo keystone-manage db_sync
- Initialiser les dépôts de clés Fernet
$ sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
$ sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- Démarrer le service d’identité
$ sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
- Configurer le serveur Apache HTTP
Modifier le fichier /etc/apache2/apache2.conf
:
$ sudo nano /etc/apache2/apache2.conf
Ajouter la ligne suivante :
ServerName controller
Activer les services Apache et WSGI :
$ sudo service apache2 restart
b. Glance (Service d’image)
- Installer Glance
$ sudo apt install -y glance
- Configurer Glance
Modifier le fichier /etc/glance/glance-api.conf
:
$ sudo nano /etc/glance/glance-api.conf
Définissez les valeurs suivantes :
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
- Peupler la base de données du service d’image
$ sudo glance-manage db_sync
- Redémarrer le service Glance
$ sudo service glance-api restart
c. Nova (Service de calcul)
- Installer Nova
$ sudo apt install -y nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
- Configurer Nova
Modifier le fichier /etc/nova/nova.conf
:
$ sudo nano /etc/nova/nova.conf
Définissez les valeurs suivantes :
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = True
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
- Peupler les bases de données du calcul
$ sudo nova-manage api_db sync
$ sudo nova-manage cell_v2 map_cell0
$ sudo nova-manage cell_v2 create_cell --name=cell1
$ sudo nova-manage db sync
- Redémarrer les services Nova
$ sudo service nova-api restart
$ sudo service nova-scheduler restart
$ sudo service nova-conductor restart
$ sudo service nova-novncproxy restart
d. Neutron (Service de réseau)
- Installer Neutron
$ sudo apt install -y neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
- Configurer Neutron
Modifier le fichier /etc/neutron/neutron.conf
:
$ sudo nano /etc/neutron/neutron.conf
Définissez les valeurs suivantes :
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = neutron
password = NEUTRON_PASS
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
Modifier le fichier /etc/neutron/plugins/ml2/ml2_conf.ini
:
$ sudo nano /etc/neutron/plugins/ml2/ml2_conf.ini
Définissez les valeurs suivantes :
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = True
- Peupler la base de données du réseau
$ sudo neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
- Redémarrer les services Neutron
$ sudo service neutron-server restart
$ sudo service neutron-linuxbridge-agent restart
$ sudo service neutron-dhcp-agent restart
$ sudo service neutron-metadata-agent restart
e. Cinder (Service de stockage en bloc)
- Installer Cinder
$ sudo apt install -y cinder-api cinder-scheduler
- Configurer Cinder
Modifier le fichier /etc/cinder/cinder.conf
:
$ sudo nano /etc/cinder/cinder.conf
Définissez les valeurs suivantes :
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = cinder
password = CINDER_PASS
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
- Remplir la base de données de stockage par blocs
$ sudo cinder-manage db sync
- Redémarrer les services Cinder
$ sudo service cinder-api restart
$ sudo service cinder-scheduler restart
f. Horizon (Tableau de bord)
- Installer Horizon
$ sudo apt install -y openstack-dashboard
- Configurer Horizon
Modifier le fichier /etc/openstack-dashboard/local_settings.py
:
$ sudo nano /etc/openstack-dashboard/local_settings.py
Définissez les valeurs suivantes :
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib
.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 3,
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
- Redémarrer le serveur Apache
$ sudo service apache2 restart
5. Vérification et dépannage
- Vérifier l’état du service
Assurez-vous que tous les services OpenStack sont en cours d’exécution :
$ sudo systemctl status <nom-du-service>
- Vérifier le service Keystone
Authentifiez-vous à l’aide de l’interface de ligne de commande OpenStack :
$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3
Vérifier le service Keystone :
$ openstack token issue
- Vérifier le service Glance
Télécharger une image exemple :
$ wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
$ openstack image create "cirros" --file cirros-0.5.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public
Lister les images :
$ openstack image list
- Vérifier le service Nova
Créer un flavor :
$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
Lister les flavors :
$ openstack flavor list
- Vérifier le service Neutron
Créer un réseau :
$ openstack network create demo-net
$ openstack subnet create --network demo-net --subnet-range 10.0.0.0/24 demo-subnet
Lister les réseaux :
$ openstack network list
- Vérifier le service Cinder
Créer un volume :
$ openstack volume create --size 1 demo-volume
Lister les volumes :
$ openstack volume list
- Vérifier le tableau de bord Horizon
Ouvrez un navigateur web et accédez à http://<controller-ip>/dashboard
. Connectez-vous avec vos identifiants admin.
6. Conclusion
L’installation manuelle d’OpenStack peut être complexe en raison de ses nombreux composants et dépendances. Cependant, en suivant ce guide, vous devriez être en mesure de configurer un environnement OpenStack fonctionnel.
Pour une personnalisation et une mise à l’échelle supplémentaires, consultez la documentation officielle d’OpenStack et les ressources communautaires.
Conseils de dépannage
- Journaux : Vérifiez toujours les journaux situés dans
/var/log/
pour obtenir des messages d’erreur détaillés. - Réseau : Assurez-vous que votre configuration réseau est correcte et qu’il n’y a pas de conflits.
- Services : Utilisez
systemctl
pour démarrer, arrêter et vérifier l’état des services. - Bases de données : Vérifiez les connexions aux bases de données et que les tables sont correctement remplies.
Ressources supplémentaires
En suivant ces étapes, vous devriez disposer d’un environnement OpenStack fonctionnel adapté à vos besoins.
One Reply to “Guide complet pour installer OpenStack manuellement sur Linux”
Très instructif merci