Cette section décrit comment installer et configurer le service d’Orchestration, nom de code heat, sur le nœud contrôleur.
Avant d’installer et configurer l’Orchestration, vous devez créer une base de données, des credentials de service, et des endpoints API. L’Orchestration requiert aussi des informations supplémentaires dans le service d’Identité.
Pour créer la base de données, compléter 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 -u root -p
Créer la base de données heat:
CREATE DATABASE heat;
Octroyer les bons droits à la base de données heat:
GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \
IDENTIFIED BY 'HEAT_DBPASS';
GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \
IDENTIFIED BY 'HEAT_DBPASS';
Remplacer HEAT_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:
$ source admin-openrc.sh
Pour créer les credentials du service, suivre les étapes suivantes:
Créer l’utilisateur heat:
$ openstack user create --domain default --password-prompt heat
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | ca2e175b851943349be29a328cc5e360 |
| name | heat |
+-----------+----------------------------------+
Ajouter le rôle admin à l’utilisateur heat:
$ openstack role add --project service --user heat admin
Note
Cette commande ne produit aucune sortie.
Créer les entités de service heat et heat-cfn:
$ openstack service create --name heat \
--description "Orchestration" orchestration
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Orchestration |
| enabled | True |
| id | 727841c6f5df4773baa4e8a5ae7d72eb |
| name | heat |
| type | orchestration |
+-------------+----------------------------------+
$ openstack service create --name heat-cfn \
--description "Orchestration" cloudformation
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Orchestration |
| enabled | True |
| id | c42cede91a4e47c3b10c8aedc8d890c6 |
| name | heat-cfn |
| type | cloudformation |
+-------------+----------------------------------+
Créer les points de terminaison API pour le service d’Orchestration:
$ openstack endpoint create --region RegionOne \
orchestration public http://controller:8004/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 3f4dab34624e4be7b000265f25049609 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 727841c6f5df4773baa4e8a5ae7d72eb |
| service_name | heat |
| service_type | orchestration |
| url | http://controller:8004/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
orchestration internal http://controller:8004/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 9489f78e958e45cc85570fec7e836d98 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 727841c6f5df4773baa4e8a5ae7d72eb |
| service_name | heat |
| service_type | orchestration |
| url | http://controller:8004/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
orchestration admin http://controller:8004/v1/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 76091559514b40c6b7b38dde790efe99 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 727841c6f5df4773baa4e8a5ae7d72eb |
| service_name | heat |
| service_type | orchestration |
| url | http://controller:8004/v1/%(tenant_id)s |
+--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
cloudformation public http://controller:8000/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | b3ea082e019c4024842bf0a80555052c |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c42cede91a4e47c3b10c8aedc8d890c6 |
| service_name | heat-cfn |
| service_type | cloudformation |
| url | http://controller:8000/v1 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
cloudformation internal http://controller:8000/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 169df4368cdc435b8b115a9cb084044e |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c42cede91a4e47c3b10c8aedc8d890c6 |
| service_name | heat-cfn |
| service_type | cloudformation |
| url | http://controller:8000/v1 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
cloudformation admin http://controller:8000/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 3d3edcd61eb343c1bbd629aa041ff88b |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | c42cede91a4e47c3b10c8aedc8d890c6 |
| service_name | heat-cfn |
| service_type | cloudformation |
| url | http://controller:8000/v1 |
+--------------+----------------------------------+
L’Orchestration nécessite des informations supplémentaires dans le service d’Identité pour gérer les stacks. Pour ajouter ces informations, effectuer les opérations suivantes:
Créer le domaine heat qui contient les projets et les utilisateurs pour les stacks:
$ openstack domain create --description "Stack projects and users" heat
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Stack projects and users |
| enabled | True |
| id | 0f4d1bd326f2454dacc72157ba328a47 |
| name | heat |
+-------------+----------------------------------+
Créer l’utilisateur heat_domain_admin pour gérer les projets et les utilisateurs dans le domaine heat:
$ openstack user create --domain heat --password-prompt heat_domain_admin
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 0f4d1bd326f2454dacc72157ba328a47 |
| enabled | True |
| id | b7bd1abfbcf64478b47a0f13cd4d970a |
| name | heat_domain_admin |
+-----------+----------------------------------+
Ajouter le rôle admin à l’utilisateur heat_domain_admin dans le domaine heat pour donner les privilèges de gestion de stacks en admin à l’utilisateur heat_domain_admin:
$ openstack role add --domain heat --user heat_domain_admin admin
Note
Cette commande ne produit aucune sortie.
Créer le rôle heat_stack_owner:
$ openstack role create heat_stack_owner
+-------+----------------------------------+
| Field | Value |
+-------+----------------------------------+
| id | 15e34f0c4fed4e68b3246275883c8630 |
| name | heat_stack_owner |
+-------+----------------------------------+
Ajouter le rôle heat_stack_owner au projet et à l’utilisateur demo pour permettre la gestion de stack par l’utilisateur demo:
$ openstack role add --project demo --user demo heat_stack_owner
Note
Cette commande ne produit aucune sortie.
Note
Vous devez ajouter le rôle heat_stack_owner à chaque utilisateur qui gère des stacks.
Créer le rôle heat_stack_user:
$ openstack role create heat_stack_user
+-------+----------------------------------+
| Field | Value |
+-------+----------------------------------+
| id | 88849d41a55d4d1d91e4f11bffd8fc5c |
| name | heat_stack_user |
+-------+----------------------------------+
Note
Le service d’Orchestration assigne automatiquement le rôle heat_stack_user aux utilisateurs qu’il créé pendant le déploiement de stack. Par défaut, ce rôle restreint les opérations API. Pour éviter les conflits, ne pas ajouter ce rôle à des utilisateurs ayant le rôle heat_stack_owner.
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:
# zypper install openstack-heat-api openstack-heat-api-cfn \
openstack-heat-engine python-heatclient
Éditer le fichier /etc/heat/heat.conf et effectuer les modifications suivantes:
Dans la section [database], configurez l’accès à la base de données:
[database]
...
connection = mysql+pymysql://heat:HEAT_DBPASS@controller/heat
Remplacer HEAT_DBPASS par le mot de passe choisi pour la base de données de l’Orchestration.
Dans les sections [DEFAULT] et [oslo_messaging_rabbit], configurer l’accès à la file de message RabbitMQ:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
Remplacer RABBIT_PASS par le mot de passe choisi pour le compte openstack dans RabbitMQ.
Dans les sections [keystone_authtoken], [trustee], [clients_keystone], et [ec2authtoken], configurer l’accès au service d’Identité:
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = heat
password = HEAT_PASS
[trustee]
...
auth_plugin = password
auth_url = http://controller:35357
username = heat
password = HEAT_PASS
user_domain_id = default
[clients_keystone]
...
auth_uri = http://controller:5000
[ec2authtoken]
...
auth_uri = http://controller:5000/v3
Remplacer HEAT_PASS par le mot de passe choisi pour l’utilisateur heat dans le service d’Identité.
Dans la section [DEFAULT], configurer les metadata et les URLs de condition d’attente:
[DEFAULT]
...
heat_metadata_server_url = http://controller:8000
heat_waitcondition_server_url = http://controller:8000/v1/waitcondition
Dans la section [DEFAULT], configurer le domaine stack et les credentials admin.
[DEFAULT]
...
stack_domain_admin = heat_domain_admin
stack_domain_admin_password = HEAT_DOMAIN_PASS
stack_user_domain_name = heat
Remplacer HEAT_DOMAIN_PASS par le mot de passe choisi pour l’utilisateur heat_domain_admin dans le service d’Identité.
(Optionnel) Pour faciliter la résolution des problèmes, activer la verbosité des logs dans la section [DEFAULT] :
[DEFAULT]
...
verbose = True
Peupler la base de données du service d’orcherstration:
# su -s /bin/sh -c "heat-manage db_sync" heat
Démarrer les services d’orcherstration et les configurer pour démarrer au boot du système:
# systemctl enable openstack-heat-api.service \
openstack-heat-api-cfn.service openstack-heat-engine.service
# systemctl start openstack-heat-api.service \
openstack-heat-api-cfn.service openstack-heat-engine.service
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.