濃墨重彩之OpenStack-11-heat編排服務


1、編排服務概覽

編排服務通過運行調用生成運行中雲應用程序的OpenStack API爲描述雲應用程序提供基於模板的編排。該軟件將其他OpenStack核心組件整合進一個單文件模板系統。模板允許你創建很多種類的OpenStack資源,如實例,浮點IP,雲硬盤,安全組和用戶。它也提供高級功能,如實例高可用,實例自動縮放,和嵌套棧。這使得OpenStack的核心項目有着龐大的用戶羣。
服務使部署人員能夠直接或者通過定製化插件來與編排服務集成
編排服務包含以下組件:

``heat``命令行客戶端
一個命令行工具,和``heat-api``通信,以運行:term:AWS CloudFormation API,最終開發者可以直接使用Orchestration REST API。

``heat-api``組件
一個OpenStack本地 REST API ,發送API請求到heat-engine,通過遠程過程調用(RPC)。

``heat-api-cfn``組件
AWS 隊列API,和AWS CloudFormation兼容,發送API請求到``heat-engine``,通過遠程過程調用。

heat-engine
啓動模板和提供給API消費者回饋事件。

2、安裝和配置

a.先決條件

  1. 完成下面的步驟以創建數據庫:
  • 用數據庫連接客戶端以 root 用戶連接到數據庫服務器:
$ mysql -u root -p
    • 創建 heat 數據庫:
CREATE DATABASE heat;
    • 對``heat``數據庫授予恰當的權限:
GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'HEAT_DBPASS';
GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' IDENTIFIED BY 'HEAT_DBPASS';
使用合適的密碼替換``HEAT_DBPASS``。
    • 退出數據庫客戶端。
  1. 獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限:
$ . admin-openrc
  1. 要創建服務證書,完成這些步驟:
  • 創建``heat`` 用戶:
$ openstack user create --domain default --password-prompt heatUser
Password:
Repeat User Password:
    • 添加 admin 角色到 heat 用戶上。
$ openstack role add --project service --user heat admin
註解
這個命令執行後沒有輸出。

    • 創建``heat`` 和 heat-cfn 服務實體:
$ openstack service create --name heat --description "Orchestration" orchestration
$ openstack service create --name heat-cfn --description "Orchestration" cloudformation
  1. 創建 Orchestration 服務的 API 端點:
$ openstack endpoint create --region RegionOne orchestration public http://controller:8004/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne orchestration internal http://controller:8004/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne orchestration admin http://controller:8004/v1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne cloudformation public http://controller:8000/v1
$ openstack endpoint create --region RegionOne cloudformation internal http://controller:8000/v1
$ openstack endpoint create --region RegionOne cloudformation admin http://controller:8000/v1
  1. 爲了管理棧,在認證服務中Orchestration需要更多信息。完成下面的步驟:
  • 爲棧創建 heat 包含項目和用戶的域:
$ openstack domain create --description "Stack projects and users" heat
    • heat 域中創建管理項目和用戶的``heat_domain_admin``用戶:
$ openstack user create --domain heat --password-prompt heat_domain_adminUser
Password:
Repeat User Password:
    • 添加``admin``角色到 heat 域 中的``heat_domain_admin``用戶,啓用``heat_domain_admin``用戶管理棧的管理權限:
$ openstack role add --domain heat --user-domain heat --user heat_domain_admin admin
註解
這個命令執行後沒有輸出。

    • 創建 heat_stack_owner 角色:
$ openstack role create heat_stack_owner
    • 添加``heat_stack_owner`` 角色到``demo`` 項目和用戶,啓用``demo`` 用戶管理棧。
$ openstack role add --project demo --user demo heat_stack_owner
註解
這個命令執行後沒有輸出。
註解
你必須添加 heat_stack_owner 角色到每個管理棧的用戶。

    • 創建 heat_stack_user 角色:
$ openstack role create heat_stack_user
註解
Orchestration 自動地分配 ``heat_stack_user``角色給在 stack 部署過程中創建的用戶。默認情況下,這個角色會限制 API 的操作。爲了避免衝突,請不要爲用戶添加 ``heat_stack_owner``角色

b.安全並配置組件

註解
默認配置文件在各發行版本中可能不同。你可能需要添加這些部分,選項而不是修改已經存在的部分 和選項。另外,在配置片段中的省略號(...)表示默認的配置選項你應該保留。

  1. 安裝軟件包:
# yum install openstack-heat-api openstack-heat-api-cfn openstack-heat-engine
  1. 編輯文件 /etc/heat/heat.conf 並完成如下動作:
  • [database] 部分,配置數據庫訪問:
[database]
...
connection=mysql+pymysql://heat:HEAT_DBPASS@controller/heat
HEAT_DBPASS 替換爲你爲 Orchestration 數據庫選擇的密碼。
    • 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊列訪問:
[DEFAULT]
...
rpc_backend=rabbit
[oslo_messaging_rabbit]
...
rabbit_host=controller
rabbit_userid=openstack
rabbit_password=RABBIT_PASS
用你在 “RabbitMQ” 中爲 “openstack” 選擇的密碼替換 “RABBIT_PASS”。
    • 在``[keystone_authtoken]``, [trustee][clients_keystone]``和``[ec2authtoken] 部分,配置認證服務訪問:
[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
將``HEAT_PASS`` 替換爲你在認證服務中爲 heat 用戶選擇的密碼。
    • 在``[DEFAULT]`` 部分,配置元數據和 等待條件URLs:
[DEFAULT]
...
heat_metadata_server_url=http://controller:8000
heat_waitcondition_server_url=http://controller:8000/v1/waitcondition
    • [DEFAULT] 部分,配置棧域與管理憑據:
[DEFAULT]
...
stack_domain_admin=heat_domain_admin
stack_domain_admin_password=HEAT_DOMAIN_PASS
stack_user_domain_name=heat
HEAT_DOMAIN_PASS 替換爲你在認證服務中爲``heat_domain_admin`` 用戶選擇的密碼。
  1. 同步Orchestration數據庫:
# su -s /bin/sh -c "heat-manage db_sync" heat
註解
忽略輸出中任何不推薦使用的信息。

c.完成安裝

  • 啓動 Orchestration 服務並將其設置爲隨系統啓動:
# 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章