首页 > 解决方案 > Ansible 查找插件仅返回“NOMATCH”结果

问题描述

我正在 Ansible 上练习查找插件。

我尝试从以下本地 csv 文件 lookup.csv 中查找匹配项。

$ cat lookup.csv
Bruce Wayne,Batman,Human
Clark Kent,Superman,Alien
Diana Prince,Wonder Woman,Deity
Wally West,The Flash,Human
John Stewart,Green Lantern,Human

剧本是:

$ cat lookup.yml
- hosts: localhost
  user: test
  become: yes
  connection: ssh
  gather_facts: no
  tasks:
    - debug: msg="Lookup the SuperHero for BRUCE WAYNE {{ lookup('csvfile','Wayne file=lookup.csv delimiter=, default=NOMATCH') }}"

我相信它应该返回匹配Bruce Wayne,Batman,Human

相反,它返回以下内容:

$ ansible-playbook lookup.yml 

PLAY [localhost] **********************************************************************************************************************

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
    "msg": "Lookup the SuperHero for BRUCE WAYNE NOMATCH"
}

PLAY RECAP ****************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

我在这出戏上做错了什么?

标签: ansible

解决方案


csvfile插件说:

“...查找第一列与键名匹配的行...”

它必须是完全匹配的。见。我不知道如何提交带空格的密钥。单字键工作正常。例如

msg: "{{ lookup('csvfile', 'Bruce_Wayne file=lookup.csv delimiter=, default=NOMATCH') }}"

这个插件只返回一个参数。模块read_csv似乎是更强大的选项。


推荐阅读