需要从 ansible json stdout 获取值并将它们放入列表中

2023-12-01

鉴于此输入:

"stdout_lines": [  
            "{",  
            "    \"apiVersion\": \"v1\",",  
            "    \"items\": [",  
            "        {",  
            "            \"apiVersion\": \"v1\",",  
            "            \"kind\": \"Namespace\",",  
            "            \"metadata\": {",  
            "                \"annotations\": {",  
            "                    \"kubectl.kubernetes.io/last-applied-configuration\": \"{\\\"apiVersion\\\":\\\"v1\\\",\\\"kind\\\":\\\"Namespace\\\",\\\"metadata\\\":{\\\"annotations\\\":{},\\\"labels\\\":{\\\"istio-injection\\\":\\\"enabled\\\"},\\\"name\\\":\\\"test-rewards\\\"}}\\n\"",  
            "                },",  
            "                \"creationTimestamp\": \"2018-09-25T23:45:37Z\",",  
            "                \"labels\": {",  
            "                    \"istio-injection\": \"enabled\"",  
            "                },",  
            "                \"name\": \"test-rewards\",",  
            "                \"resourceVersion\": \"7399723\",",  
            "                \"selfLink\": \"/api/v1/namespaces/test-rewards\",",  
            "                \"uid\": \"1a8e3-c11d-11e8-9986-8acd436f34\"",  
            "            },",  
            "            \"spec\": {",  
            "                \"finalizers\": [",  
            "                    \"kubernetes\"",  
            "                ]",  
            "            },",  
            "            \"status\": {",  
            "                \"phase\": \"Active\"",  
            "            }",  
            "        },",  
            "        {",  
            "            \"apiVersion\": \"v1\",",  
            "            \"kind\": \"Namespace\",",  
            "            \"metadata\": {",  
            "                \"creationTimestamp\": \"2018-09-26T17:33:42Z\",",  
            "                \"labels\": {",  
            "                    \"istio-injection\": \"enabled\"",  
            "                },",  
            "                \"name\": \"inventory\",",  
            "                \"resourceVersion\": \"15021\",",  
            "                \"selfLink\": \"/api/v1/namespaces/customer-inventory\",",  
            "                \"uid\": \"4fd5bfb6-c1b2-11e8-9986-8a3fc36f34\"",  
            "            },",  
            "            \"spec\": {",  
            "                \"finalizers\": [",  
            "                    \"kubernetes\"",  
            "                ]",  
            "            },",  
            "            \"status\": {",  
            "                \"phase\": \"Active\"",  
            "            }",  
            "        },",  

我试图迭代循环并获取“名称”的所有值并将它们保存在列表中。我有以下任务。但它不起作用

例如值:

\"name\": \"test-rewards\",",

\"name\": \"inventory\",",

还有这个任务:

- name: Show object id  
  set_fact:  
    group_object_value: "{{ (namespaces.stdout_lines | from_json).items[].metadata.name }}"   
  with_items: "{{ namespaces.stdout }}" 

有人可以帮忙吗?


看起来您的标准输出中有 JSON 数据command or shell任务。您想使用stdout属性,不stdout_lines;前者是单个文本块,而后者是一个列表,每行输入一个项目。这from_json过滤器仅适用于简单的字符串变量,例如stdout属性。

将 JSON 数据反序列化后,您可以使用json_query过滤得到你想要的。例如,这个剧本:

---
- hosts: localhost
  gather_facts: false
  vars:
    namespaces:
      stdout: |
        {
          "apiVersion": "v1",
          "items": [
            {
              "apiVersion": "v1",
              "kind": "Namespace",
              "metadata": {
                "annotations": {
        "kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"labels\":{\"istio-injection\":\"enabled\"},\"name\":\"test-rewards\"}}\n"
                },
                "creationTimestamp": "2018-09-25T23:45:37Z",
                "labels": {
                  "istio-injection": "enabled"
                },
                "name": "test-rewards",
                "resourceVersion": "7399723",
                "selfLink": "/api/v1/namespaces/test-rewards",
                "uid": "1a8e3-c11d-11e8-9986-8acd436f34"
              },
              "spec": {
                "finalizers": [
                  "kubernetes"
                ]
              },
              "status": {
                "phase": "Active"
              }
            },
            {
              "apiVersion": "v1",
              "kind": "Namespace",
              "metadata": {
                "creationTimestamp": "2018-09-26T17:33:42Z",
                "labels": {
                  "istio-injection": "enabled"
                },
                "name": "inventory",
                "resourceVersion": "15021",
                "selfLink": "/api/v1/namespaces/customer-inventory",
                "uid": "4fd5bfb6-c1b2-11e8-9986-8a3fc36f34"
              },
              "spec": {
                "finalizers": [
                  "kubernetes"
                ]
              },
              "status": {
                "phase": "Active"
              }
            }
          ]
        }
  tasks:
    - debug:
        var: namespaces.stdout|from_json|json_query('items[].metadata.name')

将产生以下输出:

TASK [debug] *******************************************************************
ok: [localhost] => {
    "namespaces.stdout|from_json|json_query('items[].metadata.name')": [
        "test-rewards", 
        "inventory"
    ]
}

所以如果你想要变量group_object_value要包含这些值,您可以编写:

- set_fact:
    group_object_value: "{{ namespaces.stdout|from_json|json_query('items[].metadata.name') }}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要从 ansible json stdout 获取值并将它们放入列表中 的相关文章

随机推荐

  • PHP Artisan Tinker 无法与 Laravel 5.5.16 一起使用

    我运行 php artisantinker 但它不起作用它只显示这样的消息 c xampp htdocs app tpa gt php artisan tinker 错误异常 rmdir C Users KIMUNG 1 AppData L
  • 如何使用 JavaScript Regex 提取字符串?

    我正在尝试使用 JavaScript 正则表达式从文件中提取子字符串 这是文件中的一个片段 DATE 20091201T220000 SUMMARY Dad s birthday 我要提取的字段是 摘要 方法如下 extractSummar
  • Mac Lion 10.8 的 XAMPP 上的 Php-intl 安装

    大家好 我正在尝试在 Mac 版 xampp 上安装 intl 库 我已经安装了 php 5 3 所以我只是将 intl so 文件从 php 5 3 位置复制到 Xampp bin 文件夹 之后我取消注释 extension intl s
  • Java 中的静态泛型字段

    我将通过传递通用字段 演示者 来实现片段的初始化 然后将此演示者连接到创建的视图 public class BaseViewFragment p extends Fragment implements BaseView static pri
  • 在 Access 查询中调用 VBA 函数

    我正在尝试将 8 个不同查询的结果合并回一个查询中 所有要使用的查询都是查询的查询的查询的查询的查询 8 个系列的 4 个查询根据玩家打了多少轮高尔夫球将他们分开 每个系列中的最后一个查询计算每个玩家的确切让分 我正在使用的代码可能无法实现
  • Python 脚本在运行过程中速度变慢?

    我正在运行一个具有以下基本结构的模拟 from time import time def CSV args write args to CSV file return def timeleft a L period print detail
  • 3D 游戏对象的级联效果(Tango、Unity、Android)

    我正在开始使用 Unity 为 Android 构建 Tango 应用程序 我以前有过 Unity 和 Android 经验 但对 Tango 还很陌生 我遵循了这些指南 https developers google com tango
  • 伯努利朴素贝叶斯在 NLTK 和 scikit-learn 中的结果不同

    使用 NLTK 中的伯努利朴素贝叶斯算法和 scikit learn 模块中的伯努利朴素贝叶斯算法对文本进行分类 仅分为两类 时 我得到了完全不同的结果 尽管两者的总体准确度相当 尽管远非相同 但 I 类和 II 类错误的差异很大 特别是
  • Neo4j:正确对螺栓驱动器进行单元测试

    我将 Neo4j Bolt 驱动程序添加到我的应用程序中 如下所示http neo4j com developer java import org neo4j driver v1 Driver driver GraphDatabase dr
  • 如何通过点击缩略图来显示/隐藏大图?

    如何通过点击缩略图来显示 隐藏大图 我需要这样 在这里尝试使用 JSFiddle http jsfiddle net jitendravyas Qhdaz 只用 CSS 可以吗 如果没有 那么 jQuery 解决方案就可以了 An好用吗 a
  • ms-access 内置函数 Month(number)

    我一直在使用访问查询生成器中的 Month 函数的变体 我无法从表达式构建日期值 我希望创建自己的日期 该日期将在幕后执行一些过滤和其他任务 我的问题是 我似乎无法让 Month number 函数执行我认为应该执行的操作 这是我正在寻找的
  • Python:如何使冒泡排序的实现更加省时?

    这是我的代码 用于按升序对列表元素进行排序的冒泡排序算法 foo 7 0 3 4 1 cnt 0 for i in foo for i in range len foo 1 if foo cnt gt foo cnt 1 temp foo
  • 如何在 Python 2.7 中用另一个类修饰实例方法?

    在Python 2 7中我想装饰一个实例方法test在班上Foo带有一个装饰器 它也是一个名为FooTestDecorator 来自用户 Chirstop 的question和 Python 2 文档 描述符操作指南我创建了这个例子 然而
  • 在 Android 中更改运行时语言

    我必须更改 Android 运行时的语言 是的 我知道这不是一个好的行为 但这是一个要求 所以我有一个基础课程 每项活动都从它延伸而来 该类具有以下功能 public static void changeLanguage Context c
  • Boost hana 获取第一个匹配的索引

    所以我正在尝试使用以下方法创建一个库boost hana这需要根据值获取元素索引的功能 constexpr auto tup boost hana make tuple 3 c boost hana type c
  • Silverlight 和 WCF:NotFound 错误!

    我有像这样的 WCF 方法 public string GetSomething MyObject obj return Something 当我从 silverlight 应用程序调用此函数时 出现错误 System Net WebExc
  • 如何按小时对数据进行分组?

    我已将数据读入 R 尝试使用以下代码按小时对数据进行分组 tweets lt read csv tweetCSV csv header TRUE sep stringsAsFactors FALSE tweets gt group by f
  • AJAX(原型/php)在脚本执行期间获取部分状态更新

    我有一个想要在页面后台运行的进程 该过程将需要一段时间才能运行 比如说几分钟 我已对其进行设置 以便从页面中单击按钮来启动该进程 稍等片刻 然后它就会完成 并且我可以让页面更新通知我该进程已成功运行 我正在使用原型和 php 来完成此操作
  • HQL 查询中 Hibernate 表未映射错误

    我有一个 Web 应用程序 它使用 Hibernate 对数据库进行 CRUD 操作 我收到一条错误消息 指出该表未映射 查看Java文件 错误信息 org springframework orm hibernate3 HibernateQ
  • 需要从 ansible json stdout 获取值并将它们放入列表中

    鉴于此输入 stdout lines apiVersion v1 items apiVersion v1 kind Namespace metadata annotations