Openstack 编排服务

编排服务概述

编排服务提供基于模板的编排,用于通过运行 OpenStack API 调用来生成正在运行的云应用程序来描述云应用程序。该软件将OpenStack的其他核心组件集成到一个文件模板系统中。这些模板允许您创建大多数 OpenStack 资源类型,例如实例、浮动 IP、卷、安全组和用户。它还提供高级功能,例如实例高可用性、实例自动扩展和嵌套堆栈。这使得OpenStack核心项目能够获得更大的用户群。

该服务允许部署人员直接或通过自定义插件与编排服务集成。

业务流程服务由以下组件组成:

heat命令行客户端
与 运行 AWS CloudFormation API 进行通信的 CLI。终端开发人员可以直接使用编排 REST API。heat-api
heat-api元件
一种 OpenStack 原生 REST API,通过将 API 请求发送到远程过程调用 (RPC) 来处理 API 请求。heat-engine
heat-api-cfn元件
与 AWS CloudFormation 兼容的 AWS Query API。它通过将 API 请求发送到 over RPC 来处理 API 请求。heat-engine
heat-api-cloudwatch元件
一种类似 CloudWatch 的 API 服务,用于供热项目。
heat-engine
协调模板的启动,并将事件提供回 API 使用者。

本节介绍如何在控制器节点上安装和配置代号为 heat 的业务流程服务。

本部分假定您已经有一个工作正常的 OpenStack 环境,其中至少安装了以下组件:计算、映像服务、标识。

安装和配置

  • 本节介绍如何在控制节点上安装和配置代号为 heat 的业务流程服务。

为 Red Hat Enterprise Linux 和 CentOS 进行安装和配置

先决条件

在安装和配置业务流程之前,必须创建数据库、服务凭证和 API 终结点。业务流程还需要标识服务中的其他信息。

若要创建数据库,请完成以下步骤:

  • 使用数据库访问客户端以用户身份连接到数据库服务器:root
  • 创建数据库: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
  • 退出数据库访问客户端。

      获取凭据以获取对仅限管理员的 CLI 命令的访问权限:admin

       . admin_pass

      若要创建服务凭据,请完成以下步骤:

      • 创建用户:heat
      openstack user create --domain default --password HEAT_PASS heat
      • 将角色添加到用户:adminheat
      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                   |
      +-------------+----------------------------------+
      • 创建业务流程服务 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        |
      +--------------+----------------------------------+

      业务流程需要标识服务中的其他信息来管理堆栈。若要添加此信息,请完成以下步骤:

      • 为堆栈创建包含项目和用户的域:heat
      openstack domain create --description "Stack projects and users" heat
      +-------------+----------------------------------+
      | Field       | Value                            |
      +-------------+----------------------------------+
      | description | Stack projects and users         |
      | enabled     | True                             |
      | id          | 0f4d1bd326f2454dacc72157ba328a47 |
      | name        | heat                             |
      +-------------+----------------------------------+
      • 创建用户以管理域中的项目和用户:heat_domain_adminheat
      openstack user create --domain heat --password HEAT_PASS heat_domain_admin
      +-----------+----------------------------------+
      | Field     | Value                            |
      +-----------+----------------------------------+
      | domain_id | 0f4d1bd326f2454dacc72157ba328a47 |
      | enabled   | True                             |
      | id        | b7bd1abfbcf64478b47a0f13cd4d970a |
      | name      | heat_domain_admin                |
      +-----------+----------------------------------+
      • 将角色添加到域中的用户,以启用该用户的管理堆栈管理权限:adminheat_domain_adminheatheat_domain_admin
      openstack role add --domain heat --user-domain heat --user heat_domain_admin admin
      注意!
      此命令不提供输出
      • 创建角色:heat_stack_owner
      openstack role create heat_stack_owner
      +-----------+----------------------------------+
      | Field     | Value                            |
      +-----------+----------------------------------+
      | domain_id | None                             |
      | id        | 15e34f0c4fed4e68b3246275883c8630 |
      | name      | heat_stack_owner                 |
      +-----------+----------------------------------+
      • 将角色添加到项目和用户以启用用户堆栈管理:heat_stack_ownerdemodemo
      openstack role add --project demo --user demo heat_stack_owner
      注意!
      此命令不提供输出
      注意!
      您必须将角色添加到管理堆栈的每个用户。heat_stack_owner
      • 创建角色:heat_stack_user
      openstack role create heat_stack_user
      +-----------+----------------------------------+
      | Field     | Value                            |
      +-----------+----------------------------------+
      | domain_id | None                             |
      | id        | 88849d41a55d4d1d91e4f11bffd8fc5c |
      | name      | heat_stack_user                  |
      +-----------+----------------------------------+
      注意!
      业务流程服务会自动将角色分配给它在堆栈部署期间创建的用户。默认情况下,此角色限制 API <应用程序编程接口 (API) >操作。为避免冲突,请勿将此角色添加到具有该角色的用户。heat_stack_userheat_stack_owner

      安装和配置组件

      注意!
      默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置代码段中的省略号 () 表示应保留的潜在默认配置选项。...
      • 安装软件包:
       yum install openstack-heat-api openstack-heat-api-cfn \
      openstack-heat-engine

      编辑文件并完成以下操作:/etc/heat/heat.conf

      • 在本节中,配置数据库访问:[database]
      [database]
      ...
      connection = mysql+pymysql://heat:HEAT_DBPASS@controller/heat

      替换为您为业务流程数据库选择的密码。HEAT_DBPASS

      • 在本节中,配置消息队列访问:[DEFAULT]RabbitMQ
      [DEFAULT]
      ...
      transport_url = rabbit://openstack:RABBIT_PASS@controller

      替换为您在 中为帐户选择的密码。RABBIT_PASSopenstackRabbitMQ

      • 在 、 、 和 部分中,配置标识服务访问:[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_type = 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

      替换为您在标识服务中为用户选择的密码。HEAT_PASSheat

      • 在本节中,配置元数据和等待条件 URL:[DEFAULT]
      [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_PASS
      stack_user_domain_name = heat
      • 填充业务流程数据库:
      su -s /bin/sh -c "heat-manage db_sync" heat

      注意!
      忽略此输出中的任何弃用消息。

      完成安装

      • 启动业务流程服务,并将它们配置为在系统引导时启动:
      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

      验证操作

      注意!
      在控制节点上执行这些命令。
      • 列出服务组件以验证每个进程的成功启动和注册:
      openstack orchestration service list

      注意!
      此输出应指示控制器节点上的四个组件。heat-engine

      启动实例

      在包含编排服务的环境中,您可以创建用于启动实例的堆栈。

      • 先验证:
      openstack flavor list                    查看实例类型
      openstack keypair list                   查看密钥
      openstack image list                     查看镜像
      • 创建包含以下内容的文件:demo-template.yml
      heat_template_version: 2015-10-15
      description: Launch a basic instance with CirrOS image using the
                   ``m1.noao`` flavor, ``mykey`` key,  and one network.
      
      parameters:
        NetID:
          type: string
          description: Network ID to use for the instance.
      
      resources:
        server:
          type: OS::Nova::Server
          properties:
            image: cirros
            flavor: m1.noao
            key_name: mykey
            networks:
            - network: { get_param: NetID }
      
      outputs:
        instance_name:
          description: Name of the instance.
          value: { get_attr: [ server, name ] }
        instance_ip:
          description: IP address of the instance.
          value: { get_attr: [ server, first_address ] }

      使用模板创建堆栈。demo-template.yml

      • 确定可用网络。
      openstack network list
      • 设置环境变量以反映网络的 ID。例如,使用提供商网络:NET_ID
      export NET_ID=$(openstack network list | awk '/ provider / { print $2 }')
      • 在提供商网络上创建一个 CirrOS 实例的堆栈:
      openstack stack create -t demo-template.yml --parameter "NetID=$NET_ID" stack
      • 短时间后,验证堆栈是否成功创建:
      openstack stack list

      • 显示实例的名称和 IP 地址,并与 OpenStack 客户端的输出进行比较:
      openstack stack output show --all stack
      
      
      +---------------+-------------------------------------------------+
      | Field         | Value                                           |
      +---------------+-------------------------------------------------+
      | instance_name | {                                               |
      |               |   "output_value": "stack-server-6dxjc2zkxhaq",  |
      |               |   "output_key": "instance_name",                |
      |               |   "description": "Name of the instance."        |
      |               | }                                               |
      | instance_ip   | {                                               |
      |               |   "output_value": "",                           |
      |               |   "output_key": "instance_ip",                  |
      |               |   "description": "IP address of the instance."  |
      |               | }                                               |
      +---------------+-------------------------------------------------+
      
      openstack server list

      • 删除堆栈。
      openstack stack delete --yes stack

      版权声明:
      作者:小李
      链接:https://xianshengli.cc/openstack-%e7%bc%96%e6%8e%92%e6%9c%8d%e5%8a%a1/
      来源:先生不吃香菜
      文章版权归作者所有,未经允许请勿转载。

      THE END
      分享
      二维码
      打赏
      海报
      Openstack 编排服务
      编排服务概述 编排服务提供基于模板的编排,用于通过运行 OpenStack API 调用来生成正在运行的云应用程序来描述云应用程序。该软件将OpenStack的其他核心……
      文章目录
      关闭
      目 录