이 섹션은 컨트롤러 노드에 heat이라는 코드 이름을 가진 Orchestration 모듈을 설치하고 구성하는 방법을 설명합니다.
Orchestration 서비스를 설치하고 구성하기 전에, 데이터베이스, 서비스 credential, 그리고 API 엔드포인트를 생성해야 합니다. Orchestration은 또한 Identity 서비스에서 부가적인 정보를 필요로합니다.
데이터베이스를 생성하기 위해 다음 과정을 완료합니다:
데이터베이스 액세스 클라이언트를 사용하여 데이터베이스 서버에 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 를 적절한 암호로 변경합니다.
데이터베이스 접속 클라이언트를 종료합니다.
admin credential에 대한 접근 권한을 얻기위해 관리자용 CLI 명령어 source 입력합니다:
$ source admin-openrc.sh
서비스 credential을 생성하기 위해 다음 작업을 완료합니다:
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 |
+-----------+----------------------------------+
admin 역할을 heat 사용자에 추가합니다:
$ openstack role add --project service --user heat admin
주석
이 명령어는 출력값이 없습니다.
heat 과 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 |
+-------------+----------------------------------+
Orchestration 서비스 API 엔드 포인트를 생성합니다:
$ 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 |
+--------------+----------------------------------+
Orchestration은 stack을 관리하기 위해 Identity 서비스 내 부가적인 정보를 필요로합니다. 해당 정보를 추가하기 위해 다음 단계를 완료합니다:
stack을 위한 프로젝트와 사용자를 포함하는 heat 도메인을 추가합니다:
$ openstack domain create --description "Stack projects and users" heat
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Stack projects and users |
| enabled | True |
| id | 0f4d1bd326f2454dacc72157ba328a47 |
| name | heat |
+-------------+----------------------------------+
heat 도메인에서 프로젝트와 사용자를 관리하기 위해 heat_domain_admin 사용자를 생성합니다:
$ 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 |
+-----------+----------------------------------+
heat 도메인 내 heat_domain_admin 사용자에 admin 역할을 추가하여 heat_domain_admin 사용자에게 stack 관리 작업 권한을 활성화합니다:
$ openstack role add --domain heat --user heat_domain_admin admin
주석
이 명령어는 출력값이 없습니다.
heat_stack_owner 역할을 생성합니다:
$ openstack role create heat_stack_owner
+-------+----------------------------------+
| Field | Value |
+-------+----------------------------------+
| id | 15e34f0c4fed4e68b3246275883c8630 |
| name | heat_stack_owner |
+-------+----------------------------------+
heat_stack_owner 역할을 demo 프로젝트 및 사용자에 추가하여 demo 사용자에 대한 stack 관리를 활성화합니다:
$ openstack role add --project demo --user demo heat_stack_owner
주석
이 명령어는 출력값이 없습니다.
주석
heat_stack_owner 역할을 stack을 관리하는 각 사용자에 추가해야 합니다.
heat_stack_user 역할을 생성합니다:
$ openstack role create heat_stack_user
+-------+----------------------------------+
| Field | Value |
+-------+----------------------------------+
| id | 88849d41a55d4d1d91e4f11bffd8fc5c |
| name | heat_stack_user |
+-------+----------------------------------+
주석
Orchestration 서비스는 heat_stack_user 역할을 stack 배포중에 생성되는 사용자에게 자동으로 할당합니다. 기본으로 해당 역할은 API 작업을 제한합니다. 충돌을 피하기 위해 해당 역할을 heat_stack_owner 역할을 가진 사용자에 추가하지 마십시오.
주석
디폴트 구성 파일을 배포판에 따라 달라집니다. 기존 섹션 및 옵션을 변경하는 것 보다는 해당 섹션과 옵션을 추가해야 할 수도 있습니다. 또한 구성 내용 조각 중 생략 (...) 부분은 유지될 필요성이 있는 디폴트 구성 옵션을 가리킵니다.
패키지를 설치하십시오:
# zypper install openstack-heat-api openstack-heat-api-cfn \
openstack-heat-engine python-heatclient
/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
RABBIT_PASS 를 RabbitMQ 에서 openstack 계정에 대해 선택한 암호로 변경합니다.
[keystone_authtoken], [trustee], [clients_keystone], [ec2authtoken] 섹션에서 Identity 서비스 액세스를 구성합니다:
[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
HEAT_PASS 를 Identity 서비스에서 heat 사용자에 대해 선택한 암호로 변경합니다.
[DEFAULT] 섹션에서 메타데이터와 wait 상태 URL을 구성합니다:
[DEFAULT]
...
heat_metadata_server_url = http://controller:8000
heat_waitcondition_server_url = http://controller:8000/v1/waitcondition
[DEFAULT] 섹션에서 stack 도메인 및 관리 credential을 구성합니다:
[DEFAULT]
...
stack_domain_admin = heat_domain_admin
stack_domain_admin_password = HEAT_DOMAIN_PASS
stack_user_domain_name = heat
HEAT_DOMAIN_PASS 를 Identity 서비스에서 heat_domain_admin 사용자에 대해 선택한 암호로 변경합니다.
(옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:
[DEFAULT]
...
verbose = True
Orchestration 데이터베이스를 넣어줍니다:
# su -s /bin/sh -c "heat-manage db_sync" heat
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
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.