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