6.6. 创建新角色

您可以使用可组合服务架构根据部署的要求创建新角色。例如,您可能希望仅创建一个新的 Horizon 角色来仅托管 OpenStack 控制面板(horizon)。

注意

角色名称必须以字母或数字结尾,并且仅包含字母、数字和连字符。角色名称中不得使用下划线。

流程

  1. 创建默认 roles 目录的自定义副本:

    $ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
  2. 创建名为 ~/roles/114.yaml 的新文件,并创建一个包含基本和核心 OpenStack 仪表板服务的新 Horizon 角色:

    - name: Horizon
      CountDefault: 1
      HostnameFormatDefault: '%stackname%-horizon-%index%'
      ServicesDefault:
        - OS::TripleO::Services::CACerts
        - OS::TripleO::Services::Kernel
        - OS::TripleO::Services::Ntp
        - OS::TripleO::Services::Snmp
        - OS::TripleO::Services::Sshd
        - OS::TripleO::Services::Timezone
        - OS::TripleO::Services::TripleoPackages
        - OS::TripleO::Services::TripleoFirewall
        - OS::TripleO::Services::SensuClient
        - OS::TripleO::Services::FluentdClient
        - OS::TripleO::Services::AuditD
        - OS::TripleO::Services::Collectd
        - OS::TripleO::Services::MySQLClient
        - OS::TripleO::Services::Apache
        - OS::TripleO::Services::Horizon
    • name 参数设置为自定义角色的名称。自定义角色名称的最大长度为 47 个字符。
    • CountDefault 参数设置为 1,以便默认 overcloud 始终包含 Horizon 节点。
  3. 可选:如果要扩展现有 overcloud 中的服务,请在 Controller 角色中保留现有服务。如果要创建新 overcloud,并且希望 OpenStack 控制面板保留在独立角色上,请从 Controller 角色定义中删除 OpenStack Dashboard 组件:

    - name: Controller
      CountDefault: 1
      ServicesDefault:
        ...
        - OS::TripleO::Services::GnocchiMetricd
        - OS::TripleO::Services::GnocchiStatsd
        - OS::TripleO::Services::HAproxy
        - OS::TripleO::Services::HeatApi
        - OS::TripleO::Services::HeatApiCfn
        - OS::TripleO::Services::HeatApiCloudwatch
        - OS::TripleO::Services::HeatEngine
        # - OS::TripleO::Services::Horizon                # Remove this service
        - OS::TripleO::Services::IronicApi
        - OS::TripleO::Services::IronicConductor
        - OS::TripleO::Services::Iscsid
        - OS::TripleO::Services::Keepalived
        ...
  4. 使用 ~/roles 目录作为源生成新的 roles_data-horizon.yaml 文件:

    $ openstack overcloud roles generate -o roles_data-horizon.yaml \
      --roles-path ~/roles \
      Controller Compute Horizon
  5. 为此角色定义一个新类别,以便您可以标记特定的节点。在本例中,使用以下命令创建一个 horizon 类别:

    1. 创建 horizon 类别:

      (undercloud)$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 horizon
      注意

      这些属性不用于调度实例,但计算调度程序将使用磁盘大小来确定根分区大小。

    2. 使用自定义资源类为 Dashboard 服务(horizon)标记您要指定的每个裸机节点:

      (undercloud)$ openstack baremetal node set --resource-class baremetal.HORIZON <NODE>

      <NODE> 替换为裸机节点的 ID。

    3. horizon 类别与自定义资源类关联:

      (undercloud)$ openstack flavor set --property resources:CUSTOM_BAREMETAL_HORIZON=1 horizon

      要确定与裸机节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,用下划线替换 punctuation,并使用 CUSTOM_ 前缀。

      注意

      类别只能请求一个裸机资源类实例。

    4. 设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:

      (undercloud)$ openstack flavor set --property resources:VCPU=0 --property resources:MEMORY_MB=0 --property resources:DISK_GB=0 horizon
  6. 使用以下环境文件片断定义 Horizon 节点数和类型:

    parameter_defaults:
      OvercloudHorizonFlavor: horizon
      HorizonCount: 1
  7. openstack overcloud deploy 命令中包含新的 roles_data-horizon.yaml 文件和环境文件,以及与部署相关的任何其他环境文件:

    $ openstack overcloud deploy --templates -r ~/templates/roles_data-horizon.yaml -e ~/templates/node-count-flavor.yaml

    此配置会创建一个三节点 overcloud,它由一个 Controller 节点、一个 Compute 节点和一个 Networker 节点组成。要查看 overcloud 中的节点列表,请运行以下命令:

    $ openstack server list