Я хочу использовать Ansible для сбора информации с нескольких серверов. Информация должна подвергаться локальной постобработке, поэтому она должна быть представлена в определенном формате. Кроме как grep
и sed
и awk
и другие лучшие друзья системного администратора, как мне получить от Ansible то, что имеет отношение к задаче, и ничего больше?
Должен быть способ запустить Ansible из Python, экспортируя переменные в сценарий упаковки, или запустить Python из Ansible для настройки вывода.
Ansible действительно вызывается напрямую из вашего собственного скрипта Python. В Ansible API полностью документирован. Я сам не использовал его, но у вас должна быть возможность написать собственный скрипт на Python, чтобы использовать Ansible и делать то, что вы хотите. Согласно их документации, это так просто:
import ansible.runner
runner = ansible.runner.Runner(
module_name='ping',
module_args='',
pattern='web*',
forks=10
)
datastructure = runner.run()
В документации, на которую я ссылаюсь, есть более подробный пример.