22.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 能力。