Как я могу избежать одинарных кавычек для тернарного оператора Ansible / Jinja2? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть фрагмент ниже. По сути, для включенной задачи я хотел бы предоставить переменную, содержимое которой выглядит как строка ниже:

--date='something'

или он должен быть пустым, если исходная переменная является пустой строкой. Дело в том, что мне нужно, чтобы строка была в форме выше, включая одинарные кавычки вокруг значения.

Если мне не нужны одинарные кавычки, все работает отлично! Однако, когда они мне нужны, я пытаюсь избежать их, используя приведенный ниже фрагмент кода. К сожалению, то, что у меня есть, похоже, не работает, поскольку \ 'не применяется, как ожидалось. Как я могу правильно сбежать, чтобы получить их в моей строке?

  tasks:
    - include_tasks: ../tasks/get_current.yml
    - include_tasks: ../tasks/failed_jobs_stats.yml
      vars:
        date_param: "{{ date_start != '' | ternary('--date=\''+date_start+'\'', '') }}"

1 Ответ

0 голосов
/ 27 июня 2018

Это не проблема цитирования, это проблема приоритета оператора.

В вашем примере вы:

  1. применить троичный фильтр к пустой строке ''
  2. Сравните приведенный выше результат с date_start

Что вам нужно сделать, это заключить условие в параны:

date_param: "{{ (date_start != '') | ternary('--date=\''+date_start+'\'', '') }}"
...