2016-10-26 14 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+$試合(ドットの後すなわちドメイン尾)最後の言葉。
スラッシュは二重引用符で囲まれているため、エスケープされていることに注意してください。