설치와 설정

설치와 설정

이 섹션은 컨트롤러 노드에 heat이라는 코드 이름을 가진 Orchestration 모듈을 설치하고 구성하는 방법을 설명합니다.

선행조건

Orchestration 서비스를 설치하고 구성하기 전에, 데이터베이스, 서비스 credential, 그리고 API 엔드포인트를 생성해야 합니다. Orchestration은 또한 Identity 서비스에서 부가적인 정보를 필요로합니다.

  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 를 적절한 암호로 변경합니다.

    • 데이터베이스 접속 클라이언트를 종료합니다.

  2. admin credential에 대한 접근 권한을 얻기위해 관리자용 CLI 명령어 source 입력합니다:

    $ source admin-openrc.sh
    
  3. 서비스 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
      

      주석

      이 명령어는 출력값이 없습니다.

    • heatheat-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                   |
      +-------------+----------------------------------+
      
  4. 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        |
    +--------------+----------------------------------+
    
  5. 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 역할을 가진 사용자에 추가하지 마십시오.

구성요소 설치와 구성

주석

디폴트 구성 파일을 배포판에 따라 달라집니다. 기존 섹션 및 옵션을 변경하는 것 보다는 해당 섹션과 옵션을 추가해야 할 수도 있습니다. 또한 구성 내용 조각 중 생략 (...) 부분은 유지될 필요성이 있는 디폴트 구성 옵션을 가리킵니다.

  1. 패키지를 설치하십시오:

    # apt-get install heat-api heat-api-cfn heat-engine \
      python-heatclient
    
  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
      

      RABBIT_PASSRabbitMQ 에서 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
      
  2. Orchestration 데이터베이스를 넣어줍니다:

    # su -s /bin/sh -c "heat-manage db_sync" heat
    

설치 마무리

  1. Orchestration 서비스를 재시작합니다:

    # service heat-api restart
    # service heat-api-cfn restart
    # service heat-engine restart
    
  1. 기본으로 Ubuntu 패키지들은 SQLite 데이터베이스를 생성합니다.

    해당 구성은 SQL 데이터베이스 서버를 사용하므로, 해당 SQLite 데이터베이스 파일을 삭제할 수 있습니다:

    # rm -f /var/lib/heat/heat.sqlite
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.