You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible Playbook中基于名称提取完整磁盘规则的JMESPath查询问题

解决方法

1. 调整JMESPath查询语句

如果原始JSON是规则列表结构,要匹配指定名称的完整规则条目,只需移除原查询末尾的.value即可。

比如原查询可能是:

[?name == '(SUP) Filesystem usage /var >85%'].value

修改为:

[?name == '(SUP) Filesystem usage /var >85%']

若需返回单个对象而非数组,可追加[0]:

[?name == '(SUP) Filesystem usage /var >85%'][0]

2. Ansible Playbook示例

以下是完整的提取逻辑示例:

- name: 定义磁盘规则数据集
  set_fact:
    disk_rules: |
      [
        {
          "schemaId": "disk-rule-001",
          "name": "(SUP) Filesystem usage /var >85%",
          "value": {
            "path": "/var",
            "threshold": 85,
            "metric": "usage"
          },
          "enabled": true
        },
        {
          "schemaId": "disk-rule-002",
          "name": "(SUP) Filesystem usage /tmp >90%",
          "value": {
            "path": "/tmp",
            "threshold": 90,
            "metric": "usage"
          },
          "enabled": true
        }
      ]

- name: 提取指定名称的完整磁盘规则
  set_fact:
    target_rule: "{{ disk_rules | json_query('[?name == `(SUP) Filesystem usage /var >85%`][0]') }}"

- name: 验证提取结果
  debug:
    var: target_rule

执行后,target_rule会包含schemaId、name、value等所有外层字段的完整数据。

3. 注意事项

  • 名称含特殊字符时,JMESPath查询需用反引号(`)包裹字符串,避免语法错误。
  • 若匹配到多条规则,去掉[0]会返回数组形式结果,可根据后续需求调整。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:43:53