Cette section décrit comment installer et configurer le service d’Orchestration, nom de code heat, sur le contrôleur.
Avant d’installer et configurer l’Orchestration, vous devez créer une base de données, des crédentiels 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, réalisez les étapes suivantes :
Utilisez le client d’accès à la base de données pour vous connecter au serveur de base de données en tant qu’utilisateur root:
$ mysql -u root -p
Créer la base de données heat:
CREATE DATABASE heat;
Octroyer les droits nécessaires à 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 le client d’accès à la base de données.
Sourcer les crédentiels admin pour accéder aux commandes en ligne réservées à l’administrateur :
$ . admin-openrc
Pour créer les crédentiels du service, réalisez 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 | e0353a670a9e496da891347c589539e9 |
| 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 endpoints API du 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 du 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 lui attribuer les privilèges d’administration de stacks :
$ openstack role add --domain heat --user-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 |
+-----------+----------------------------------+
| domain_id | None |
| id | 15e34f0c4fed4e68b3246275883c8630 |
| name | heat_stack_owner |
+-----------+----------------------------------+
Ajouter le rôle heat_stack_owner au projet et à l’utilisateur demo pour permettre la gestion de stacks 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 |
+-----------+----------------------------------+
| domain_id | None |
| 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 stacks. Par défaut, ce rôle restreint les opérations API. Pour éviter les conflits, ne pas ajouter ce rôle aux utilisateurs ayant le rôle heat_stack_owner.
Note
Les fichiers de configuration par défaut diffèrent d’une distribution à l’autre. Vous pouvez être amené à ajouter ces sections et options plutôt que de modifier des sections et options existantes. De plus, une ellipse (...) dans les extraits de configuration indique d’éventuelles options de configuration par défaut que vous devez conserver.
Installer les packages :
# yum install openstack-heat-api openstack-heat-api-cfn \
openstack-heat-engine
Éditer le fichier /etc/heat/heat.conf et effectuer les actions suivantes :
Dans la section [database], configurer 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 au service de files de messages RabbitMQ:
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
Remplacez RABBIT_PASS par le mot de passe que vous avez attribué au 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
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = 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_name = default
[clients_keystone]
...
auth_uri = http://controller:35357
[ec2authtoken]
...
auth_uri = http://controller:5000/v2.0
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 crédentiels d’administration.
[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é.
Peupler la base de données du service d’Orchestration :
# su -s /bin/sh -c "heat-manage db_sync" heat
Note
Ignorer les éventuels messages obsolètes.
Démarrer les services d’Orchestration et les configurer pour être lancés au démarrage 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.