Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

附录 E. 自动配置集标记

内省操作会执行一系列的基准数据测试,director 将保存这些测试数据。您可以创建一组策略来以不同方式使用这些数据。例如:

  • 策略可以找出并隔离 overcloud 中性能较低或不稳定的节点。
  • 策略可以自动使用标签把节点标记为不同的配置集。

E.1. 策略文件语法

策略使用 JSON 格式,它包括了一组规则。每个规则都包括一个 description、一个 condition 和一个 action

描述

规则描述

Example:

"description": "A new rule for my node tagging policy"

Conditions

一个 condition 就是使用以下“关键字-值”来定义测试的条件:

field
定义要测试的项。如需了解项的类型,请参阅 第 E.4 节 “自动配置集标记属性”
op

指定测试所使用的操作。包括:

  • eq - 等于
  • ne - 不等于
  • lt - 少于
  • gt - 多于
  • le - 少于或等于
  • ge - 多于或等于
  • in-net - 检查一个 IP 地址是否在指定的网络中
  • matches - 完全和提供的正则表达式相匹配
  • contains - 包括和正则表达式匹配的值;
  • is-empty - 检查项是否为空。
invert
一个布尔值,用来指定是否对检查结果进行反向处理。
multiple

在存在多个结果的情况下,定义使用的测试。这包括:

  • any - 只需要任何一个结果匹配
  • all - 需要所有结果都匹配
  • first - 需要第一个结果匹配
value
测试中的值。如果项和操作结果为这个值,则条件返回为一个“true”的结果。否则,返回“false”。

Example:

"conditions": [
  {
    "field": "local_gb",
    "op": "ge",
    "value": 1024
  }
],

Actions

当条件结果返回“true”时要进行的操作。它使用 action 关键字,以及由 action 值决定的额外关键字:

  • fail - 使内省失败。需要一个 message 参数来包括失败的信息。
  • set-attribute - 在一个 Ironic 节点上设置一个属性。需要一个 path 项,它是到一个 Ironic 属性(如 /driver_info/ipmi_address)的路径,以及一个 value 值。
  • set-capability - 在一个 Ironic 节点上设置一个能力。需要 namevalue 项,它们分别是新能力的名称和值。当前存在的相同能力的值会被覆盖。例如,使用它来定义节点配置集。
  • extend-attribute - 与 set-attribute 相似,只是在存在相同能力时把这个值附加到当前的值后面。如果同时使用了 unique 参数,则在相同值已存在时不进行任何操作。

Example:

"actions": [
  {
    "action": "set-capability",
    "name": "profile",
    "value": "swift-storage"
  }
]

E.2. 策论文件示例

以下是一个带有要应用的内省规则的 JSON 文件示例(rules.json):

[
  {
    "description": "Fail introspection for unexpected nodes",
    "conditions": [
      {
        "op": "lt",
        "field": "memory_mb",
        "value": 4096
      }
    ],
    "actions": [
      {
        "action": "fail",
        "message": "Memory too low, expected at least 4 GiB"
      }
    ]
  },
  {
    "description": "Assign profile for object storage",
    "conditions": [
      {
        "op": "ge",
        "field": "local_gb",
        "value": 1024
      }
    ],
    "actions": [
      {
        "action": "set-capability",
        "name": "profile",
        "value": "swift-storage"
      }
    ]
  },
  {
    "description": "Assign possible profiles for compute and controller",
    "conditions": [
      {
        "op": "lt",
        "field": "local_gb",
        "value": 1024
      },
      {
        "op": "ge",
        "field": "local_gb",
        "value": 40
      }
    ],
    "actions": [
      {
        "action": "set-capability",
        "name": "compute_profile",
        "value": "1"
      },
      {
        "action": "set-capability",
        "name": "control_profile",
        "value": "1"
      },
      {
        "action": "set-capability",
        "name": "profile",
        "value": null
      }
    ]
  }
]

这个示例包括 3 个规则:

  • 如果内存低于 4096 MiB,内省失败。通过使用这个规则可以排除那些不应该成为您的云环境组成部分的节点。
  • 硬盘容量大于或等于 1 TiB 的节点会被无条件地分配 swift-storage 配置集。
  • 硬盘容量在 1 TiB 和 40 GiB 间的节点可以作为 Compute 节点或 Controller 节点。我们分配了两个配置集(compute_profilecontrol_profile)以便 openstack overcloud profiles match 命令可以做最终的决定。另外,在这种情况下,还需要删除存在的配置集(如果不删除,存在的配置集会被优先使用)。

其它节点没有改变

注意

使用内省规则分配配置集总会覆盖存在的值。但是,[PROFILE]_profile 是一个例外,已存在配置集的节点会忽略它。

E.3. 导入策略文件

使用以下命令把策略文件导入到 director:

$ openstack baremetal introspection rule import rules.json

然后运行内省进程。

$ openstack overcloud node introspect --all-manageable

在内省结束后,检查节点以及分配给它们的配置集:

$ openstack overcloud profiles list

如果您的内省规则有错误,可以把它们删除:

$ openstack baremetal introspection rule purge

E.4. 自动配置集标记属性

Automatic Profile Tagging(自动配置集标记)会检查每个条件的 field 属性的以下节点属性:

属性描述

memory_mb

节点的内存数量(以 MB 为单位)。

cpus

节点 CPU 的内核总数量。

cpu_arch

节点 CPU 的架构。

local_gb

节点的 root 磁盘的存储总量。如需了解更多为一个节点设置 root 磁盘的信息,请参阅 第 6.5 节 “为节点定义 Root Disk”