第 23 章 配置自动配置集标记

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

  • 这些策略可识别性能不佳或不稳定的节点并隔离这些节点,使其不在 overcloud 中使用。
  • 这些策略可定义是否将节点自动标记到特定配置集。

23.1. 策略文件语法

策略文件使用 JSON 格式,它包括了一组规则。每个规则都定义一个 description、一个 condition 和一个 action。description 是规则的纯文本描述,condition 使用键值模式定义一个评估,action 是条件的执行。

Description

description 是规则的纯文本描述。

例如:

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

Conditions

condition 就是使用以下键-值来定义评估:

field

定义要评估的字段:

  • memory_mb - 节点的内存大小 (MB)。
  • cpus - 节点 CPU 的总线程数。
  • cpu_arch - 节点 CPU 的架构。
  • local_gb - 节点根磁盘的总存储空间。
op

指定测试所使用的操作。这包括如下属性:

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

在存在多个结果的情况下,定义使用的测试。此参数包括如下属性:

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

例如:

"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 参数,则在相同值已存在时不进行任何操作。

例如:

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