Filter 无法在ansible中的单引号之间添加单引号

Filter 无法在ansible中的单引号之间添加单引号,filter,ansible,ansible-2.x,single-quotes,Filter,Ansible,Ansible 2.x,Single Quotes,下面是我的剧本: - set_fact: excludefolders: "{{ excludefolders + ' -o -name ' + item | default('') }}" with_items: "{{ lookup('vars', 'MY_' + Layer).split(',') }}" - debug: msg: "exfolderr is {{ excludefolders }}" 我得到下面的输出 ok: [1

下面是我的剧本:

   - 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 charecter和quote filter来添加单引号,但都不起作用。下面是我尝试过的

   - 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(',') }}"

有点难看,但它能起作用:

---
- 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'

虽然有效,但你的解决方案让我大笑。看起来你可以在生活中取得任何成就“在动画片中任何事情都是可能的。”-Bugs Bunny