将精确字符串与数组/列表匹配-Ansible

将精确字符串与数组/列表匹配-Ansible,ansible,ansible-2.x,Ansible,Ansible 2.x,service\u name变量打印以下内容 "msg": [ "BLAH PEX", "BLAH AEX non prod", "BLAH BIND", "BLAH DBFactory" ] 我想匹配变量BSA,它包含字符串BLAH BIND。我试过这样的方法: - debug: msg: "Match found" when: "BSA in service_name" 它起作用了!但问题是,如果BSA包含字符串BLAH,它也会匹配。我希望只有

service\u name
变量打印以下内容

"msg": [
    "BLAH PEX",
    "BLAH AEX non prod",
    "BLAH BIND",
    "BLAH DBFactory"
]
我想匹配变量
BSA
,它包含字符串
BLAH BIND
。我试过这样的方法:

- debug:
    msg: "Match found"
  when: "BSA in service_name"
它起作用了!但问题是,如果
BSA
包含字符串
BLAH
,它也会匹配。我希望只有在完全匹配的情况下才匹配。现在,我想它是逐字匹配的

预期输出:它应该跳过调试任务,因为当
BSA
包含字符串
BLAH
时,它不应该与
服务名称
列表中的任何字符串匹配

如何实现匹配数组中整个精确字符串的任何帮助

我使用的是ansible 2.7

Q:“预期输出:它应该跳过调试任务,因为当BSA包含字符串BLAH时,它不应该匹配服务名称列表中的任何字符串。”

A:它按预期工作。字符串“BLAH”不匹配,已跳过调试任务

- hosts: localhost
  vars:
    service_name: [ "BLAH PEX", "BLAH AEX non prod", "BLAH BIND", "BLAH DBFactory" ]
    BSA: "BLAH"

  tasks:
    - debug:
        var: service_name
    - debug:
        var: BSA
    - debug:
        msg: "Match found"
      when: "BSA in service_name"
    - debug:
        msg: "Continue"
给予


谢谢@Vlamdimir。我感到很有趣的是,字符串BSA不需要用单引号(例如服务名称中的“BSA”)或双引号(例如服务名称中的“BSA”)来解释为字符串。这是一条很好的情报,从引文开始。1) 看。需要
变量的名称
消息
。2) 看。谢谢你的评论。
shell> ansible-playbook playbook.yml

PLAY [localhost] ***

TASK [debug] ***
ok: [localhost] => {
    "service_name": [
        "BLAH PEX", 
        "BLAH AEX non prod", 
        "BLAH BIND", 
        "BLAH DBFactory"
    ]
}

TASK [debug] ***
ok: [localhost] => {
    "BSA": "BLAH"
}

TASK [debug] ***
skipping: [localhost]

TASK [debug] ***
ok: [localhost] => {
    "msg": "Continue"
}

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