Как мне убедиться, что переменная пути заканчивается на sla sh in Ansible? - PullRequest
2 голосов
/ 29 января 2020

Я хочу убедиться, что переменная, представляющая папку, установленную пользователем, имеет окончание sla sh, поэтому я могу избежать ошибок, связанных с отсутствием sla sh или double sla sh.

В основном я рассматриваю задачу восстановления, например:

- when: my_path[-1] != '/'
  set_fact:
      my_path: "{{ mypath }}/"

Если это условие можно записать на чистом jinja2, даже лучше, так как я могу избежать создания дополнительного set_fact и поместить этот трюк в блок "vars".

Есть ли лучший способ реализовать это? Очевидно, что нет встроенного фильтра jinja2 для форматирования путей.

1 Ответ

1 голос
/ 29 января 2020

Вы можете написать свой собственный фильтр.

В ansible.cfg вы можете указать свой каталог фильтра:

[defaults]
filter_plugins=<path/to/your/library/of/filters>

А теперь вы вставите <path/to/your/library/of/filters>/path_filter.py:

from ansible.module_utils import basic

def canonical_path(path):
    ''' Verify that path ends with / and add / if not '''
    if path[-1] != '/':
        return path + '/'
    return path

class FilterModule(object):
    ''' Ansible Filter to provide canonical_path '''
    def filters(self):
        return {'canonical_path': canonical_path}

Это позволяет вам писать в своих пьесах

- name: Show canonical_path
  debug:
     msg: "Path is : {{ mypath | canonical_path }}" 
...