Ansible и модули на python
Все это крайне и крайне просто. Не нужно изгаляться и писать какие-то многострочники на баше, или пытаться выполнить более нескольких команд через модуль shell. Состряпать свой модуль можно за 5-10 минут, и это время куда лучше потратить на то чтобы ваша логика работала стабильно, вместо того чтобы костылить.
Все что нам нужно - поместить файл вида my_module.py в директорию с именем library. где my_module - то что вы будете использовать в playbook.
В сообщении выше я прикрепил шаблон такого модуля. Модуль выполняется в несколько этапов:
1) ansible собирает аргументы из task и передает их вашему скрипту
2) в скрипте вы описывате все переменные, требуются ли они для выполнения вашего кода или нет (required), можете указать тип (например bool), задать значение по-умолчанию (default), а также задать жесткий список возможных вариантов (choises).
3) получаем значения переменных из ансибла и записываем их уже в те переменные. которые будем использовать в коде.
4) объявлям какие-либо функции, если это нужно
5) навешиваем 1 или несколько try и выполняем логику вашего модуля.
6) в момент выполнения логики или после нее, при необходимости пишем какие-либо данные в переменную result. Это та самая переменная, данными из которой вы захотите оперировать после отработки модуля. Оформляйте их в виде списка или словаря, как вам удобно будет потом после модуля парсить эту переменную уже из ansible.
Вот собственно и все. все что нужно - подумать в каком формате принимать от юзера данные и в каком формате их отдавать на output.
#ansible