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

时间:2018-06-18 14:36:52

标签: 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

    - 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变量替换为此表达式,以便过滤器是动态的。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题答案是:

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

意思是你放弃文字引号并在括号中包含外部注册的变量,我希望这也有助于其他人。