【问题标题】:Match exact string against an array / list - Ansible将精确字符串与数组/列表匹配 - Ansible
【发布时间】:2020-02-27 07:43:13
【问题描述】:

service_name 变量打印以下内容。

"msg": [
    "BLAH PEX",
    "BLAH AEX non prod",
    "BLAH BIND",
    "BLAH DBFactory"
]

我想匹配包含字符串BLAH BIND 的变量BSA。我尝试过这样的事情:

- debug:
    msg: "Match found"
  when: "BSA in service_name"

有效!但问题是,如果BSA 包含字符串BLAH,它也匹配。我希望它只有在完全匹配的情况下才匹配。现在我猜它逐字匹配。

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

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

我正在使用 ansible 2.7

【问题讨论】:

    标签: ansible ansible-2.x


    【解决方案1】:

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

    答:它按预期工作。字符串“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"
    

    给予

    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
    

    【讨论】:

    • 感谢@Vlamdimir。它按预期工作,我自己弄糊涂了。
    • 我觉得有趣的是,字符串 BSA 不需要用单引号(例如 service_name 中的“BSA”)或双引号(例如 service_name 中的“BSA”)来解释为字符串。伟大的英特尔在这里。
    • 截至报价。 1) 见Examples of debugvar 需要 the name of a variablemsg 需要 the message。 2) 见How to use variable substitution in a when condition?。感谢您的评论。
    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多