Ansible-字符串不在变量中时触发失败

时间:2019-07-30 18:23:05

标签: ansible

我正在通过SNMP收集事实,但是如果在一个OID响应中找不到一个字符串,我想触发一个失败。

下面是我的剧本。但是我无法触发它。

注意:我正在使用Ansible 2.8.3

triggerModal = () => {
    this.setState({modalVisible: !this.state.modalVisible});
}

3 个答案:

答案 0 :(得分:0)

通过阅读Ansible When文档,我建议从您的{{子句中删除}}when:

when: 'Xisco NX-OS' not in ansible_sysdescr

如果这还不够,请尝试使用debug:键上的ansible_sysdescr模块,以目视检查是否存在该确切短语。

答案 1 :(得分:0)

问题只取决于更改后的状态更改时才触发的处理程序。由于snmp事实,因此不进行更改就不会触发。

答案 2 :(得分:0)

模块snmp_facts未报告changed: true。注册并查看result

tasks:
    - name: "TASK 1: GATHER FACTS VIA SNMP"
      snmp_facts:
        host: "{{ ansible_host }}"
        ...
      register: result
    - debug:
        var: result

调试给出

    "result": {
        "ansible_facts": {
         ...
        "changed": false, 
        "failed": false
    }
}

"changed": false是未触发处理程序的原因。如果您想测试ansible_sysdescr,只需将其作为剧本中的下一个任务

  - fail:
      msg: parse err
    when: ansible_sysdescr is not search('Xisco NX-OS')