Производительность / проблемы при вызове скрипта python для предоставления вывода json для ansible - PullRequest
0 голосов
/ 16 декабря 2018

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

Я выбрал скрипт Python, который выполняет тысячи настроек ион выполняет синтаксический анализ данных и предоставляет допустимые входные данные json для ансибельных модулей

- name: Calling Python1 script
  script: /usr/bin/python /python1.py
  register: var1

#perform few tasks using ansible modules

#Calling python2 script
- name: Calling Python2 script
  script: /usr/bin/python /python2.py
  register: var2


#perform few tasks using ansible modules

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

Все работает нормально и никаких проблем до сих пор нет.

Все, что выполняется в скриптах Python, может быть достигнуто с помощью доступных сборников (с помощью шаблонов jinja2).Но на разработку уходит много времени, и довольно сложно написать ансамбль сборников для анализа данных и ввода данных в ансибальные модули.

По этой причине я использую скрипты python и вызываю скрипты python в ансамблей playbook..

Теперь меня беспокоит,

  1. Вызов сценариев Python вызывает снижение производительности или проблемы?
  2. Вызов сценариев Python является стандартным кодированием?если я теряю какие-либо преимущества, если я вызываю скрипты на Python, такие как обработка ошибок или контроль над ANSIBLE playbooks

1 Ответ

0 голосов
/ 16 декабря 2018

Все, что выполняется в скриптах Python, также может быть достигнуто с помощью доступных сборников (с помощью шаблонов jinja2).Но на разработку уходит много времени, и довольно сложно написать сборники рассказов для анализа данных и ввода данных в модули.

Я думаю, это то, что вы действительно просите комментировать,или повторил: «Моя команда может сделать все это в Ansible + Python, но мы можем сделать это в Ansible + Jinja2».

Вы не говорите, насколько сложны создаваемые вами скрипты Python, но одинБольшим преимуществом использования Ansible + Jinja является то, что ваши игровые книги будут более идемпотентными и, в конечном счете, приведут к менее ненужным изменениям в системах (что может привести к дополнительным перезапускам служб, вопросам управления и т. д.).

Но, учитывая это, насколько работа по созданию и поддержке этих шаблонов Jinja2 повлияет на вашу команду?Если вы небольшой магазин, а Ansible - это лишь небольшая часть вашей работы, но у вас есть значительная глубина разработчиков Python, тогда сценарий Python может быть «достаточно хорошим» решением.

Вы упомянули двапроблемы:

  1. Вызов сценариев Python вызывает снижение производительности или какие-либо проблемы?

Да, каждый раз, когда вы вызываете другую задачу (Python, Shell, исполняемый файл и т. Д.) От Ansible у вас будет дополнительный штраф за выполнение.Вы можете не увидеть его в небольшой среде, но если вы используете playbook на сотнях систем или на каждом контейнере, который длится всего несколько минут, вы наверняка увидите некоторые потери производительности, делающие это таким образом.

Вызов сценариев Python является стандартной кодировкой?если я теряю какие-либо преимущества, если я вызываю скрипты Python, такие как обработка ошибок или управляю ANSIBLE PlayBook

Да, вам придется обрабатывать больше ошибок в вашем скрипте Pythonв противном случае он будет обрабатываться для вас в кодировке Ansible или Jinja2, включая то, что вы упомянули вместе с идемпотентными функциями, предоставляемыми Ansible.

В конечном счете, то, что вы просите «один правильный ответ», и редко бывает один,В своих командах я стараюсь углубить опыт Ansible, поэтому я выберу Ansible + Jinja2.

...