将动态值添加到 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 }}"
意思是你删除了文字引号并将外部注册变量包含在括号中,我希望这也能帮助其他人。
我有一个 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 }}"
意思是你删除了文字引号并将外部注册变量包含在括号中,我希望这也能帮助其他人。