Ansible - 对输出应用过滤器,然后注册为变量

Posted

技术标签:

【中文标题】Ansible - 对输出应用过滤器,然后注册为变量【英文标题】:Ansible - apply filter on output and then register as a variable 【发布时间】:2018-04-24 05:18:08 【问题描述】:

我正在注册操作的输出,然后应用过滤器来显示值。但我也想将该显示的值注册为变量。我无法将其注册为变量。有谁知道这个问题的解决方案吗?

这是我的剧本

---
- name: Filtering output to register in a variable
  hosts: localhost
  gather_facts: no
  tasks:
    - name: register filtered output to a  variable 
      uri:
        url: https://example.com/api/id
        method: GET 
        user: administrator
        password: password
        force_basic_auth: yes 
        validate_certs: no
      register: restdata
    - name: Display the output
      debug: msg=" restdata.json.parameter[1] "

我想知道。岂不是更简单。如果我们先过滤输出,然后将其注册为变量?有人知道怎么做吗?

【问题讨论】:

是的,在较新的版本中。支持。 【参考方案1】:

你不能注册一个变量,但你可以设置一个事实(在大多数用例中,包括你的,这将等同于一个变量):

- set_fact:
    the_output: " restdata.json.parameter[1] "
- name: Display the output
  debug:
    var: the_output

【讨论】:

以上是关于Ansible - 对输出应用过滤器,然后注册为变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 find (ansible) 模块读取多数组

ansible基础-Jinja2模版 | 测试

Ansible 之 ansible gather_facts配置

Ansible系列:各种变量定义方式和变量引用

ansible学习笔记04(最佳实践)

Ansible 如何只输出错误信息?