Ansible jinja2 filter '|' (pipe) что это значит?

Я написал задачу, как показано ниже, но не могу понять, что такое '|' делает?

 tasks:
 - shell: /usr/bin/foo
   register: result
   ignore_errors: True

 - debug: msg="it failed"
   when: result|failed

 - debug: msg="it changed"
   when: result|changed

Также я нашел несколько примеров в Интернете, но не могу понять, что такое '|' делает?

 debug: msg={{ ipaddr |replace(",", ".") }}

Еще один пример:

 - hosts: localhost
  vars:
    D:
      1 : "one"
      2 : "two"
  tasks:
    - debug: var=D
    - debug: msg="D[1] is {{ D[1]|default ('undefined') }}"

Было бы замечательно, если бы кто-то мог объяснить подробно или указать мне какой-нибудь URL?

Любая помощь будет оценена.

Спасибо.

12 голосов | спросил Ram Meena 17 J0000006Europe/Moscow 2015, 08:46:27

1 ответ


0

Символом канала вы передаете значение в фильтр. Существует множество фильтров Jinja 2 , но Ansible добавляет несколько дополнительных фильтров .

Термин filter иногда может сбивать с толку, поскольку все фильтры работают по-разному. Некоторые, например, уменьшают результирующий набор хеша /массива, некоторые изменяют содержимое строки, но затем существуют фильтры, которые просто возвращают true или false.

Лучшим объяснением может быть то, что это модификаторы, и они могут делать что угодно с вашими переданными данными. Вы даже можете написать свои собственные фильтры .

Фильтры можно объединять в цепочку, передавая результат от первого фильтра следующему и так далее. Он работает точно так же, как команды конвейера в оболочке Unix.

"value" | filter1 | filter2 | filterN

Фильтр failed возвращает true если пройденный результат не удался. Он просто проверяет свойство failed из result .

Фильтр changed такой же, но проверяет, есть ли изменения в переданном результате. Он проверяет свойство changed из result.

ipaddr | replace(",", ".") заменяет все вхождения , с .. Таким образом, значение 127,0,0,1 будет преобразовано в 127.0.0.1.

Фильтр default установит значение по умолчанию, если вход был нулевым, например, неопределенная переменная. undefined_var | default("var was undefined") -> Это либо напечатает содержимое undefined_var, либо строку «var was undefined». В приведенном выше примере вы выводите значение 2-го элемента D (D[1]) и, если он не существует, вместо него указывается "undefined".

ответил udondan 17 J0000006Europe/Moscow 2015, 09:56:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132