Ansible 向jinja2表达式中添加动态值

Ansible 向jinja2表达式中添加动态值,ansible,jinja2,ansible-template,Ansible,Jinja2,Ansible Template,我有一本ansible剧本,看起来像这样: --- - hosts: localhost vars: filename: "me-0.0.1" tasks: - name: get filenames find: paths: /home/vagrant/test patterns: 'me\-[\d]\.[\d]\.[\d]\.jar' use_regex: yes register: fn - nam

我有一本ansible剧本,看起来像这样:

---
- hosts: localhost
  vars:
   filename: "me-0.0.1"
  tasks:
   - name: get filenames
     find:
       paths: /home/vagrant/test
       patterns: 'me\-[\d]\.[\d]\.[\d]\.jar'
       use_regex: yes
     register: fn

    - name: remove old files
      file:
        path: "{{ item }}"
        state: absent
      with_items:
        "{{ (fn.files | sort(attribute='ctime')) | map(attribute='path') | reject('search', 'me-0.0.1') | list }}"
这里的目标是将存储在filename变量中的值输入到中的表达式中,并使用项替换硬编码的me-0.0.1,但我不确定如何执行该操作


因此,我的问题是如何将ansible变量替换为该表达式,以便过滤器是动态的。

要回答我自己的问题,答案如下:

{{ (fn.files | sort(attribute='ctime')) | map(attribute='path') | reject('search', (filename)) | list }}"

这意味着删除文字引号并将外部注册变量包含在括号中,我希望这对其他人也有帮助。

请参见:呃,不,这是一个合法的问题,我会给出一个原因,这个问题涉及将值替换为表达式,因此,这不是我的问题所独有的,也是这个旨在创建信息存储库的网站的一个合法问题,因此这里的投票结果无效。请注意,jinja2 2.7+版本是必需的