json - 如何在ansible中获取嵌套变量的值
问题描述
我正在尝试从下面的文件中一一获取警报的值,以执行某些操作。有没有办法这样做?
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
prometheus: k8s
role: alert-rules
app: prometheus-operator
release: prometheus-operator
annotations:
exclude.release.openshift.io/internal-openshift-hosted: "true"
creationTimestamp: "2020-04-22T09:22:14Z"
generation: 1
name: free-memory-percentage
namespace: openshift-monitoring
selfLink: /apis/monitoring.coreos.com/v1/namespaces/openshift-cloud-credential-operator/prometheusrules/cloud-credential-operator-alerts
spec:
groups:
- name: free-memory
rules:
- alert: node_mem_free_Percentage
annotations:
description: Node memory is under pressure
expr: 100 - (100 * node_memory_MemFree_bytes / node_memory_MemTotal_bytes) < 50
for: 2m
- name: High-CPU-Usage
rules:
- alert: HighCPUUsage4test
annotations:
description: CPU usage is above the 0% threshold
expr: (100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 0
for: 2m
解决方案
问:“从文件中一一获取警报值。”
答:使用json_query。给定file.yml
变量,下面的任务
- include_vars:
file: file.yml
name: my_data
- set_fact:
my_alerts: "{{ my_data.spec.groups|json_query('[].rules[].alert') }}"
- debug:
var: my_alerts
给
my_alerts:
- node_mem_free_Percentage
- HighCPUUsage4test
推荐阅读
- python - 按下按钮后在 Tkinter 中显示 networkx 图
- c# - 表达式的部分求值
- c - Linux 内核 flush_write_buffers() 如何在 x86 上工作?
- flutter - Flutter 导航器仅在显示 AlertDialog 时弹出
- python - + 不支持的操作数类型:神经网络中的“NoneType”和“int”
- c# - 如何在 C# 中使用 LINQ 转换 JSON 字符串
- python-3.x - 如何在python中替换一行中的一个标点符号?
- ruby - 无法从 Rails 6 应用程序的 Google Secret Manager 检索密钥
- html - Create a slider menu in pure CSS with a Trigger Button
- node.js - 为什么当我更改它的数据时这个文件的哈希值保持不变?