首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在剧本中注册输出时未定义变量

尝试在剧本中注册输出时未定义变量
EN

Stack Overflow用户
提问于 2019-03-25 21:34:56
回答 3查看 12.7K关注 0票数 2

我正在尝试将一个变量与F5池的查询的输出一起注册,我得到了这个错误:

代码语言:javascript
复制
"<type 'list'>": "VARIABLE IS NOT DEFINED!", 

我做错了什么?感谢您的帮助。谢谢!

代码语言:javascript
复制
---
- name: GRAB F5 FACTS
  hosts: f5
  connection: local
  gather_facts: no
  tasks:
    - name: Collect BIG-IP facts
      bigip_device_facts:
        gather_subset: ltm-pools
        provider: "{{ prov }}"
      register: bigip_device_facts

    - name: FACTS OUTPUT
      debug:
        var: "{{ item.members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"
      register: jkout
      with_items: "{{ bigip_device_facts.ltm_pools }}" 
      when: item.full_path  == "/Common/mypool"

    - name: Set a variable
      debug:
        msg: "jkvar={{ jkout }}"
EN

回答 3

Stack Overflow用户

发布于 2019-03-25 23:23:52

您正在使用带有选项var:debug:模块,并且这需要一个变量,而不是一个jinja2模板。

因此,要么将其更改为:

代码语言:javascript
复制
debug:
  var: item.members

代码语言:javascript
复制
debug:
  msg: "{{ item.members }}"
票数 4
EN

Stack Overflow用户

发布于 2019-03-26 03:39:48

正如@dgw所说,问题出在debug模块的var选项上。

https://docs.ansible.com/ansible/latest/modules/debug_module.html#parameters

此攻略适用于:

代码语言:javascript
复制
  - name: test rejectattr
    hosts: localhost
    gather_facts: no

    vars:
      members:
        - { name: "one", state: "present" }
        - { name: "two", state: "absent" }
        - { name: "three", state: "present" }

    tasks:

      - name: FACTS OUTPUT
        debug:
          msg: "{{ members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"
票数 0
EN

Stack Overflow用户

发布于 2019-03-26 15:41:07

感谢您的回复。我会进一步调查的。除此之外,我想我还能用另一种方法解决这个问题。

代码语言:javascript
复制
    - name: FACTS OUTPUT
  set_fact:
    listado: "{{ item.members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"
  with_items: "{{ bigip_device_facts.ltm_pools }}"
  when: item.full_path  == "/Common/mypool"
- debug: msg={{ listado }}
  register: jkout

- name: Set a variable
  debug:
    msg: "jkvar={{ jkout }}"

这是一种正确的做法吗?谢谢!!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55339043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档