Я автоматически защищаю ключи SSL следующим образом:
- name: Find ssl keys
find: paths="/etc/ssl/" patterns="*.key" recurse=yes
register: secure_ssl_keys_result
- name: Secure ssl keys
file: path={{ item.path }} user=root group=root mode=600
with_items: secure_ssl_keys_result.files
Теперь для каждого элемента есть огромное лог-сообщение со всем содержимым элемента:
ok: [127.0.0.1] => (item = {u'uid ': 0, u'woth': False, u'mtime ': 1454939377.264, u'inode': 400377, u'isgid ': False, u' size ': 3243, u'roth': False, u'isuid ': False, u'isreg': True, u'gid ': 0, u'ischr': False, u'wusr ': True, u'xoth ': False, u'rusr': True, u'nlink ': 1, u'issock': False, u'rgrp ': False, u'path': u '/ etc / ssl / foo.key', u 'xusr': False, u'atime ': 1454939377.264, u'isdir': False, u'ctime ': 1454939657.116, u'isblk': False, u'xgrp ': False, u'dev': 65025, u ' wgrp ': False, u'isfifo': False, u'mode ': u'0600', u'islnk ': False})
Это невероятно нечитаемо, так как я хочу знать только путь к элементу, который обрабатывается (и может быть изменен). С большим количеством ключей это быстро выходит из-под контроля.
Как я могу изменить эту игру таким образом, item.path
чтобы для каждого предмета печаталась только та ?
Я уже пробовал no_log: True
, но это полностью опускает вывод, конечно.
no_log: true
и вернуть значениеitem.path
с помощью модуля отладкиОтветы:
Ansible 2.2 имеет
loop_control.label
для этого.источник
Способ 1
использование
Он вернет список путей:
Вся ваша задача станет:
Помните, что вы можете выбрать только один атрибут, его невозможно использовать
attribute=['path', 'mode']
или подобный.Способ 2
Я думал об использовании извлечения, чтобы иметь возможность извлекать несколько ключей (потому что иногда необходимо иметь второй ключ для
when
условия), но мне не удалось это сделать, так как мне нужно было бы отобразить список диктов, а затем сопоставить список ключей над определенным dict, что не представляется возможным, поскольку map принимает только имя функции, но не определение функции / связанные функции. Буду благодарен за предложение здесь!Отличная идея из комментариев (Спасибо, Uditha Desilva !):
Способ 3
В качестве альтернативы можно использовать пользовательский фильтр, подобный этому (это то, что я делал до того, как узнал
map
):ansible.cfg
:источник
Ты не можешь Это либо все, либо ничего (через
no_log: True
)источник