我有一个看起来像这样的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变量替换为此表达式,以便过滤器是动态的。
答案 0 :(得分:1)
回答我自己的问题答案是:
{{ (fn.files | sort(attribute='ctime')) | map(attribute='path') | reject('search', (filename)) | list }}"
意思是你放弃文字引号并在括号中包含外部注册的变量,我希望这也有助于其他人。