2016-10-26 60 views
1

我有域的列表:迭代唯一列表從字符串創建拆分

--- 
domains: 
- foo.bar 
- baz.bar 

我有任務,我需要遍歷這些域,提取物領域的尾巴,使這些尾巴的唯一列表和然後創建由這些尾巴命名的目錄。

事情是這樣的,但據我所知的Jinja2不支持列表理解:

--- 
- name: Ensure all directories exist 
    file: 
    path: "/tmp/sandbox/{{ item }}" 
    state: directory 
    with_items: "[domain.split('.')[-1] for domain in domains] | unique" 

是否有可能或者我需要創建一個自定義過濾器的Jinja2?這會工作嗎?

--- 
- name: Ensure all directories exist 
    file: 
    path: "/tmp/sandbox/{{ item }}" 
    state: directory 
    with_items: "{{ domain_tails | my_custom_filter }}" 

謝謝!

回答

2

您可以mapregex_search實現這一目標:

- debug: msg="Ensure dir for {{ item }}" 
    with_items: "{{ domains | map('regex_search','\\w+$') | list | unique }}" 

\w+$的最後一個字(即域名尾點後)相匹配。
請注意,斜槓被轉義,因爲它位於雙引號內。