#ansible
#ansible
Вопрос:
У меня есть эта задача в моем учебнике:
- name: service check
block:
- name: service check | check port 843 is connected.
shell: |
netstat -n | grep 843 | grep ESTABLISHED |wc -l
register: check_843_connection_count
- debug: msg="{{inventory_hostname}} (PASS) {{check_843_connection_count.stdout}} connections to port 843"
when: check_843_connection_count.stdout | int > 0
- debug: msg="{{inventory_hostname}} (FAIL) {{check_843_connection_count.stdout}} connections to port 843"
when: check_843_connection_count.stdout | int <= 0
when:
- stype is defined and stype == "foo"
tags: mmr_check_843_estiablished
Я думаю, что, вероятно, есть способ объединить две debug
задачи. Может быть, что-то вроде:
- debug: msg="{{inventory_hostname}} {{check_843_connection_count | int >0 ? '(PASS)' : '(FAIL)'}} {{check_843_connection_count.stdout}} connections to port 843"
Но, очевидно, что в приведенном выше есть синтаксические ошибки.
Ответ №1:
Jinja является языком шаблонов Python, поэтому встроенный if будет писать точно так же, как в Python.
Имейте в виду, что Ansible написан на Python, так что это также имеет смысл.
Итак, вы могли бы написать эту задачу отладки:
- debug:
msg: >-
{{ inventory_hostname }}
({{ 'PASS' if check_843_connection_count.stdout | int > 0 else 'FAIL' }})
{{ check_843_connection_count.stdout }}
connections to port 843