在ansible中使用表达式作为过滤器参数

时间:2017-02-14 18:57:44

标签: ansible jinja2

我想在本地文件系统中搜索与glob模式匹配的文件,并获取相对于父目录的路径。以下是代码

- name: check for local configuration files
  debug:
    var: 
     - "{{ item | relpath('{{ playbook_dir }}/templates/httpd/{{ vhost.user }}') }}"
  with_fileglob: "{{ playbook_dir }}/templates/httpd/{{ vhost.user }}/*.j2"

上面的代码无效,因为Ansible无法解析嵌套表达式?

我打算使用set_fact将表达式预先评估为变量,并将其传递给relpath

如果没有这个额外的变量声明,是否有可能实现结果?是否可以将表达式用作过滤器的参数?

1 个答案:

答案 0 :(得分:3)

您可以在jinja表达式中按名称访问变量:

"{{ item | relpath(playbook_dir+'/templates/httpd/'+vhost.user) }}"