Cette section décrit comment installer et configurer le service Compute , nom de code nova, sur le nœud contrôleur.
Avant d’installer et configurer le service Compute, vous devez créer des bases de données, des credentials de service, et des endpoints API.
Pour créer les bases de données, suivre ces étapes :
Utiliser le client d’accès à la base de données pour se connecter au serveur de base en tant qu’utilisateur root
:
# mysql
Créer les bases de données nova_api
, nova
et nova_cell0
:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
Octroyer les bons droits aux bases de données :
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
Remplacer NOVA_DBPASS
par un mot de passe approprié.
Quitter l’accès client de la base de données.
Sourcer les accréditations admin
pour obtenir l’accès aux commandes en ligne spécial-admin :
$ . admin-openrc
Créer les credentials pour le service Compute :
Créer l’utilisateur nova
:
$ openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 8a7dbf5279404537b1c7b86c033620fe |
| name | nova |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Ajouter le rôle admin
à l’utilisateur nova
:
$ openstack role add --project service --user nova admin
Note
Cette commande ne produit aucune sortie.
Créer l’entité de service nova
:
$ openstack service create --name nova \
--description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | 060d59eac51b4594815603d75a00aba2 |
| name | nova |
| type | compute |
+-------------+----------------------------------+
Create the Compute API service endpoints:
$ openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 3c1caa473bfe4390a11e7177894bcc7b |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+
$ openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | e3c918de680746a586eac1f2d9bc10ab |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+
$ openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1
+--------------+-------------------------------------------+
| Field | Value |
+--------------+-------------------------------------------+
| enabled | True |
| id | 38f7af91666a47cfb97b4dc790b94424 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 060d59eac51b4594815603d75a00aba2 |
| service_name | nova |
| service_type | compute |
| url | http://controller:8774/v2.1 |
+--------------+-------------------------------------------+
Create a Placement service user using your chosen PLACEMENT_PASS
:
$ openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | fa742015a6494a949f67629884fc7ec8 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
Add the Placement user to the service project with the admin role:
$ openstack role add --project service --user placement admin
Note
Cette commande ne produit aucune sortie.
Create the Placement API entry in the service catalog:
$ openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 2d1a27022e6e4185b86adac4444c495f |
| name | placement |
| type | placement |
+-------------+----------------------------------+
Create the Placement API service endpoints:
$ openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2b1b2637908b4137a9c2e0470487cbc0 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 02bcda9a150a4bd7993ff4879df971ab |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 3d71177b9e0f406f98cbff198d74b182 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
Note
Les fichiers de configuration par défaut diffèrent par distribution. Vous pouvez être amenés à ajouter ces sections et options plutôt que de modifier des sections et options existantes. De plus, une ellipse (...
) dans l’extrait de configuration indique d’éventuelles options de configuration par défaut que vous devriez conserver.
Installez les paquets :
# apt install nova-api nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler nova-placement-api
Éditer le fichier /etc/nova/nova.conf
et effectuer les modifications suivantes :
Dans les sections [api_database]
et [database]
, configurez l’accès à la base de données :
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
Remplacer NOVA_DBPASS
par le mot de passe choisi pour les bases de données Compute.
Dans la section [DEFAULT]
, configurer l’accès à la file de messages RabbitMQ
:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
Remplacer RABBIT_PASS
par le mot de passe choisi pour le compte openstack
dans RabbitMQ
.
Dans les sections [api]
et [keystone_authtoken]
, configurer l’accès au service d’Identité :
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
Remplacer NOVA_PASS
par le mot de passe choisi pour l’utilisateur nova
dans le service d’Identité.
Note
Commenter ou supprimer toute autre option dans la section [keystone_authtoken]
.
Dans la section [DEFAULT]
, configurer l’option my_ip
pour utiliser l’adresse IP de l’interface de management du nœud contrôleur :
[DEFAULT]
# ...
my_ip = 10.0.0.11
Dans la section [DEFAULT]
, activer le support du service de Réseau :
[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
Note
Par défaut, Compute utilise un pilote de firewall interne. Comme le service de Réseau inclut un pilote de firewall, vous devez désactiver le pilote firewall Compute en indiquant le pilote firewall nova.virt.firewall.NoopFirewallDriver
.
Dans la section [vnc]
, configurer le proxy VNC pour utiliser l’adresse IP de l’interface de management du nœud contrôleur :
[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
Dans la section [glance]
, configurer l’emplacement de l’API du service d’Image :
[glance]
# ...
api_servers = http://controller:9292
Dans la section [oslo_concurrency]
, configurer le chemin des verrous :
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
log_dir
de la section [DEFAULT]
.In the [placement]
section, configure the Placement API:
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
Replace PLACEMENT_PASS
with the password you choose for the
placement
user in the Identity service. Comment out any other options in
the [placement]
section.
Peupler la base de données nova-api:
# su -s /bin/sh -c "nova-manage api_db sync" nova
Note
Ignorer les messages d’obsolescence éventuels dans cette sortie écran.
Register the cell0
database:
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
Create the cell1
cell:
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
109e1d4b-536a-40d0-83c6-5f121b82b650
Peupler la base de données nova:
# su -s /bin/sh -c "nova-manage db sync" nova
Verify nova cell0 and cell1 are registered correctly:
# nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+
Redémarrer les services Compute :
# service nova-api restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.