首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

与json_query一起使用时,set_fact不起作用

是因为json_query是Ansible中用于从JSON数据中提取特定值的过滤器。而set_fact是Ansible中用于设置变量的模块。当使用json_query过滤器时,它会返回一个列表或字典,而不是一个单一的值,因此set_fact无法正确地将结果设置为变量。

解决这个问题的方法是使用Ansible的debug模块来查看json_query的结果,并使用set_fact将所需的值从结果中提取出来。以下是一个示例:

代码语言:txt
复制
- name: 使用json_query和set_fact
  hosts: localhost
  gather_facts: False
  vars:
    my_json_data:
      - name: John
        age: 30
      - name: Jane
        age: 25

  tasks:
    - name: 提取特定值
      debug:
        msg: "{{ my_json_data | json_query('[*].name') }}"
      register: result

    - name: 设置变量
      set_fact:
        my_variable: "{{ result.msg[0] }}"

    - name: 打印变量
      debug:
        var: my_variable

在上面的示例中,我们使用json_query过滤器从my_json_data中提取所有的"name"值,并将结果存储在result变量中。然后,我们使用set_fact将第一个"name"值设置为my_variable变量。最后,我们使用debug模块打印my_variable的值。

这样,我们就可以在使用json_query过滤器时正确地设置变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 运维必备 | ansible 自动化运维工具之变量的定义调用

    前言:在编写ansible脚本中往往会使用变量,它能让我们的工作变得更加灵活,但是在ansible中变量的使用方式有很多种,下面跟着【WeiyiGeek】作者通过一个个简单示例来进行一一讲解,赶快来一起来学习吧...定义变量」描述:set_fact是一个模块,我们可以通过set_fact模块在tasks中定义变量,并且register的功能很相似,也是将值赋值给变量。...gather_fcats set_fact模块案例: # cat > gatherfcats1.yml <<end --- - name: "Play 1 - local" hosts: local...: #但是可以通过set_fact模块hostvars来进行跨主机引用(重要)(gather_facts关键字无关) var1: "gather_facts settting no"...- name: "show set_fact" shell: "echo {{var1}}" register: shellrst #注册变量也能进行hostvars跨主机调用(gather_facts

    1.3K10

    基于Ansible和Devops的一键测试环境部署实践

    产品支持的数据库、应用服务器、中间件、操作系统等的多样化,使测试环境的组合越来越多,导致测试环境的部署难度不断增加。 如何选择一个合适的工具,实现多样化环境部署的同时保证部署操作的易用性。...1 set_fact set_fact模块主要用来在部署过程中修改和新增变量,设置的变量可以在后面的role中使用。...set_fact设置mysql数据库的连接信息 - name: set driver version when: db_version|string == '5.7' set_fact:...{{ db_name }}" db_driver: "com.mysql.jdbc.Driver" (左右滑动查看全部代码) 2 with_items with_items模块用来执行循环,可include_vars...在执行清理环境过程中,对有停止、卸载脚本的产品,调用脚本进行清理;没有停止、卸载服务的使用系统命令进行清理。对于不存在的目录进行删除操作时的错误忽略。

    1.6K20

    【String注解驱动开发】困扰了我很久的AOP嵌套调用终于解决了!

    使更多童鞋受益,现给出开源框架地址: https://github.com/sunshinelyz/mykit-delay PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。...写在前面 最近在分析Spring源码时,在同一个类中写了嵌套的AOP方法,测试时出现:Spring AOP在同一个类里自身方法相互调用时无法拦截。哎,怎么办?还能怎么办呢?...在配置事务时也可能会出现问题,比如someMethod方法是REQUIRED,someInnerMethod方法是REQUIRES_NEW,someInnerMethod的配置将不起作用someMethod...在实现里保留一个AOP代理对象的引用,调用时通过这个代理即可。例如下面的代码。...别忘了给个在看和转发,让更多的人看到,一起学习一起进步!! 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/spring-annotation

    90220

    scala:函数至简原则、函数简化过程

    1.return可以省略,Scala会使用函数体的最后一行代码作为返回值 2.如果函数体只有一行代码,可以省略花括号 3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略) 4.如果有return...,则不能省略返回值类型,必须指定 5.如果函数明确声明unit,那么即使函数体中使用return关键字也不起作用 6.Scala如果期望是无返回值类型,可以省略等号 这种形式称为过程 7.如果函数无参...,但是声明了参数列表,那么调用时,小括号,可加可不加 8.如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略 9.如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略 代码示例 object...def f2(name:String): String = name println(f2("atguigu")) //(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略...,必须指定 def f4(name:String) ={ return name } //(5)如果函数明确声明unit,那么即使函数体中使用return关键字也不起作用

    1.2K10

    什么是机器学习?

    *“机器学习是使计算机像人类一样学习和行动的科学,并通过以观察和真实交互的形式向他们提供数据和信息,从而随着时间的推移以自主方式改善他们的学习。”...–英伟达 “机器学习是使计算机在未经过明确编程的情况下运行的科学。” – 斯坦福 “机器学习基于可从数据中学习而无需依赖基于规则的编程的算法。”...在实际应用程序上进行研究时,通常会推动该领域的进步,其原因有两个:1.倾向于发现现有方法的界限和局限性2.研究人员和开发人员领域专家一起工作,并利用时间和专业知识来改善系统性能。...争夺2009年Netflix Price的团队发现,将学习者与其他团队的学习者结合在一起时,他们会获得最好的成绩,从而改进了推荐算法(请参阅Netflix的博客,详细了解为什么他们最终没有使用此集成体)...当学习算法(即学习器)不起作用时,通常,更快的成功之路是向机器提供更多数据,目前,众所周知,其可用性是近来机器和深度学习算法发展的主要动力年份; 但是,这可能会导致可伸缩性问题,其中我们拥有更多数据,但是花时间了解数据仍然是一个问题

    54420

    scala(五) 函数式编程

    万物皆函数 在Scala中函数式编程和面向对象编程融合在一起了。...可变参数不能与带名参数一起使用(后面会讲) 带参默认值 在程序开发中,往往有这样的需求,当某些值为null或0时,我们需要判断,然后给它指定一个默认值。...String):String = return context print(say("hello")) //hello } 如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用...函数中无法指定返回值,至少我试了好几次没成功 如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用 上面的都不行,这个也自然没用了 scala 如果期望时无返回值类型,可以省略等号...没有等号,哈哈哈 如果参数无参,但是声明了参数列表,那么调用时,小括号,可以不加。

    38020
    领券