带条件的Ansible ad-hoc命令

时间:2019-04-27 00:17:01

标签: ansible adhoc

我想运行此剧本的Ansible临时命令

---
- hosts: localhost
  tasks:

    - name: Print message if ansible version is greater than 2.7.0
      debug:
        msg: "Ansible version is  {{ ansible_version.full }}"
      when: ansible_version.full >= "2.7.4"

我有此命令,如何包含条件“何时”?

ansible localhost -m debug -a msg="{{ ansible_version.full }}"

1 个答案:

答案 0 :(得分:1)

  

我有此命令,如何包含条件“何时”?

when:是jinja2 if语句的语法糖,因此您可以使用:

ansible localhost -m {% if ansible_version.full >= '2.7.4' %}debug{% endif %} -a msg="{{ ansible_version.full }}"

关于如何完全跳过任务,您必须找到可以放在其中的模块,该模块不会导致什么发生,例如{ {1}}与pause等,或编写自己的seconds=0模块


此外,虽然我只是逐字复制了您的noop:语句,但我相信正确条件是使用version comparison test

when:

因为您撰写的内容将按字母顺序进行比较,而不使用版本语义,因此ansible localhost -m debug -a msg="{% if (ansible_version.full is version('2.7.4', '>=')) %}{{ ansible_version.full }}{% endif %}" 2.10.4自{{1} }在排序列表中的出现早于>=