task - depresiva - Muestra el tiempo que tarda cada tarea errante y ansiosa en completarse
sintomatologia depresiva definicion (4)
Estoy convirtiendo un aprovisionador errante de shell a ansible y me preguntaba si hay alguna opción para mostrar el tiempo real que lleva completar cada tarea.
Idealmente, quiero comparar la diferencia entre instalar varios paquetes en yum usando un método shell: y el método incorporado en yum: with_items. Cajero automático Estoy sentado aquí con un cronómetro pero necesito horarios precisos para esto.
Ansible coloca marcas de tiempo en sus registros, por lo que podría usar eso. Puedes activar esto usando tu archivo ansible.cfg:
[defaults]
log_path = ./ansible.log
También puedes hacer algo tan crudo como este: crea un libro de jugadas que se vea así:
---
#
# 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 }}"
Luego, include
eso donde quiera que aparezca una marca de tiempo.
He resuelto la sincronización de las duraciones de las tareas ansibles al agregar un complemento de devolución de llamada . Los complementos de devolución de llamada fueron diseñados para permitirle ejecutar su propio código de acceso basado en eventos que ocurren en el contexto de una ejecución de Ansible.
El complemento que uso se implementa fácilmente creando un directorio callback_plugins y colocando un script de Python en él.
Aquí hay una muestra de la salida resultante al final de su ejecución de libro de jugadas:
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
Además, antepongo el time
comando de shell a la ejecución de ansible-playbook. Esto agrega muy bien todas las duraciones de tareas individuales.
EDITAR:
A partir de Ansible v2.0.0, este complemento en particular se envía con el propio Ansible. Simplemente agregue callback_whitelist = profile_tasks
a su archivo ~/.ansible.cfg
.
Simplemente anteponga la ejecución de todo el libro de jugadas de Ansible con el time
. Asegúrese de que su shell:
script haga lo mismo que yum:
module, como actualizar la memoria caché, descargar archivos o usar el caché local, etc.
El beneficio de usar yum:
es, entre otras cosas, Ansible puede manejar mejor las instalaciones fallidas en lugar de solo ejecutar ciegamente su shell:
comando como una cosa monolítica.
Creo que la diferencia será extremadamente pequeña (fracciones de un segundo a 2-3 segundos). Me imagino que necesitaría ejecutar su índice de referencia docenas de veces para obtener resultados estadísticamente precisos.