Невозможно добавить одинарные кавычки между одинарными кавычками в ansible - PullRequest
0 голосов
/ 26 февраля 2020

Ниже моя книга игр:

   - set_fact:
       excludefolders: "{{ excludefolders + ' -o -name ' + item | default('') }}"
     with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}"


   - debug:
       msg: "exfolderr is {{ excludefolders }}"

Я получаю вывод ниже

ok: [10.0.17.113] => { "msg": "exfolderr is -o -name custom -o -name tree -o -name log"

Однако я хочу, чтобы переменная заключалась в одинарные кавычки, как показано ниже:

Ожидаемый результат:

ok: [10.0.17.113] => { "msg": "exfolderr is -o -name 'custom' -o -name 'tree' -o -name 'log'"

Я пытался использовать escape-символ, а также фильтр цитат для добавления одинарных кавычек, но ни одна из них не сработала. Вот что попробовал.

   - set_fact:
       excludefolders: "{{ excludefolders + ' -o -name ' + item | quote | default('') }}"
     with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}"

   - set_fact:
       excludefolders: "{{ excludefolders + ' -o -name ' + \' + item + \'  | default('') }}"
     with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}"


   - set_fact:
       excludefolders: "{{ excludefolders + ' -o -name ' ~ \' + item ~ \'  | default('') }}"
     with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}"


   - set_fact:
       excludefolders: "{{ excludefolders + ' -o -name \''  + item + '\''  | default('') }}"
     with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}"

1 Ответ

1 голос
/ 26 февраля 2020

Немного некрасиво, но работает:

---
- hosts: localhost
  tasks:
  - set_fact:
      excludefolders: ""

  - set_fact:
      excludefolders: "{{ excludefolders + ' -o -name ' + quote + item|default('') + quote }}"
    with_items:
    - custom
    - tree
    - log
    vars:
    - quote: "'"

  - debug:
      msg: "exfolderr is {{ excludefolders }}"

Дает следующее:

TASK [debug] ********************************************************************************
ok: [localhost] => 
  msg: exfolderr is  -o -name 'custom' -o -name 'tree' -o -name 'log'
...