2016-10-26 1 views
1

У меня есть список доменов:перебрать уникальный список создается из строки расколоть

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

У меня есть задачи, где мне нужно перебрать эти домены, экстракт домен хвост, сделать уникальный список этих хвостов и затем создайте каталоги, названные этими хвостами.

Нечто подобное, но AFAIK 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

Вы можете добиться этого с map и regex_search:

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

\w+$ матч последнего слова (то есть домен хвост после точки).
Обратите внимание, что косая черта экранирована, поскольку она находится внутри двойных кавычек.

 Смежные вопросы

  • Нет связанных вопросов^_^