将动态值添加到 jinja2 表达式中

Adding dynamic value into jinja2 expression

我有一个 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 }}"

这里的目的是将存储在文件名变量中的值放入表达式中,用项目替换硬编码的 me-0.0.1,但我不确定该怎么做。

所以我的问题是如何将一个 ansible 变量替换到这个表达式中,以便过滤器是动态的。

为了回答我自己的问题,答案是这样的:

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

意思是你删除了文字引号并将外部注册变量包含在括号中,我希望这也能帮助其他人。