Ansible ad-hoc команда с условными выражениями - PullRequest
1 голос
/ 27 апреля 2019

Я хотел бы выполнить команду Ansible ad-hoc этой пьесы

---
- 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 Ответ

1 голос
/ 27 апреля 2019

У меня есть эта команда, как я могу включить условное «когда»?

when: - это синтетический сахар для оператора jinja2 if, поэтому вы должны использовать:

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

Что касается того, как пропустить задачу целиком, вам нужно найти модуль, который вы могли бы вставить туда, который бы не вызывал ничего , например pause с seconds=0 или другим, или напишите свой собственный noop: модуль


Кроме того, хотя я только что дословно скопировал ваше when: утверждение, я считаю, что правильное условие - использовать version сравнительный тест :

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

потому что написанное вами будет сравниваться лексикографически и без использования семантики версий, поэтому 2.10.4 будет не считаться >= 2.7, поскольку 2.1 появляется в отсортированном списке раньше, чем 2.7

...