Подтвердить что ты не робот

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

Я конвертирую брандмауэр-провайдер из оболочки в незаменимый, и мне было интересно, есть ли возможность показать фактическое время, необходимое для выполнения каждой задачи?

В идеале я хочу сравнить разницу между установкой нескольких пакетов в yum с помощью метода shell: и встроенного метода yum: with_items. ATM Я сижу здесь с секундомером, но для этого мне нужны точные времена.

4b9b3361

Ответ 1

Я решил выполнить синхронизацию продолжительности длительной задачи, добавив плагин обратного вызова . Плагины обратного вызова были разработаны для того, чтобы вы могли запускать свой собственный arbirary-код на основе событий, которые происходят в контексте прогона Ansible.

Плагин, который я использую, легко развертывается, создавая каталог callback_plugins и удаляя в него python script.

Вот пример полученного результата в конце запуска вашей книги:

PLAY RECAP ******************************************************************** 
npm_install_foo | Install node dependencies via npm ------------------- 194.92s
gulp_build | Run Gulp to build ----------------------------------------- 89.99s
nodejs | Update npm ---------------------------------------------------- 26.96s
common | Update apt cache and upgrade base os packages ----------------- 17.78s
forever | Install forever (restarts Node.js if it fails) --------------- 16.84s
nodejs | Node.js | Install Node.js and npm ----------------------------- 15.11s
bower | Install bower --------------------------------------------------- 9.37s
Copy locally fetched repo to each instance ------------------------------ 8.03s
express | Express | Install Express ------------------------------------- 8.00s

Кроме того, я предваряю команду оболочки time для запуска незанятой пьесы. Это красиво суммирует все длительности отдельных задач.

EDIT:

По сравнению с Ansible v2.0.0 этот конкретный плагин поставляется с самим Ansible! Просто добавьте callback_whitelist = profile_tasks в ваш файл ~/.ansible.cfg.

Ответ 2

Ansible помещает временные метки в свои журналы, поэтому вы можете использовать это. Вы можете включить это с помощью файла ansible.cfg:

[defaults]
log_path = ./ansible.log

Вы также можете сделать что-то грубое, как это: создать книгу, которая выглядит так:

---
#
# Outputs a timestamp to the console
#
# Used for debugging/timing stuff.
#

- local_action: shell date +'%F %T'
  register: ts
  sudo: no

- name: Timestamp
  debug: msg="{{ ts.stdout }}"

Затем include, где вы хотите вывести отметку времени.

Ответ 3

К сожалению, по умолчанию нет регистрации производительности.

Но вы можете добавить свой собственный callback прослушиватель в ansible. Этот обратный вызов будет уведомлен о начале и конце действий...

В качестве полного примера рассмотрим плагин datadog

Ответ 4

Просто добавьте исполнение всей пьесы Ansible с помощью time. Убедитесь, что ваш shell: script выполняет то же самое, что и модуль yum:, например кеширование обновлений, загрузка файлов и использование локально кэшированных и т.д. И т.д.

Преимущество использования yum: заключается в том, что, помимо прочего, Ansible может лучше обрабатывать неудавшиеся установки, а не просто слепо запускать команду shell: как монолитную вещь.

Я думаю, что разница будет крайне мала (доли секунды до 2-3 секунд). Я предполагаю, что вам нужно будет проводить свой тест десятки раз, чтобы получить статистически достоверные результаты.