# Tasks et Fact Collectors

## Introduction

Muppy se connecte en **SSH** sur des **Hosts** pour exécuter des **Tasks** et/ou collecter des **Facts**.&#x20;

Les **Tasks**:&#x20;

* permettent d'exécuter des commandes sur les Hosts. Muppy gère 2 types de Tasks:&#x20;
  * **Internal** ; ce sont des fonctions écrites en Python dans des **Scripts** internes à Muppy
  * **Shell Script** ; ce sont des scripts shell écrits directement dans l'interface de Muppy&#x20;
* sont "analysées" et exposées dans l'interface graphique de Muppy qui permet à tous types d'utilisateurs de les lancer ou de les planifier&#x20;
* sont exécutées au travers d'un système de Jobs asynchrones qui trace toutes les exécutions et maintient une main courante de toutes les opérations réalisées par les tâches.&#x20;

Les **Task Internal** sont "Debuggables" et concises; peu de code par rapport aux commandes "shell" d'origine.

Les **Facts** sont des données de configuration nécessaires à l'exécution des **Tasks** collectés en exécutant des tâches particulières les **Fact Collectors**.  Les Fact Collectors sont toujours des "Internal" Tasks.

POSTGRESQL\_INSTALLED\_VERSIONS = \[12,13] est un exemple de **Fact**

Un **Addon Muppy** regroupe un ensemble de **Tasks** ainsi qu'une une Interface Utilisateur spécifique qui permet de les exploiter.

### Exemple de Task "Internal" et de Fact Collector

![Exemple de Tasks et de Fact Collector - Intallation de glances](https://3772830354-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJQEyyq3uo2ur4VSBiaCB%2Fuploads%2FxQDV6IzZyZICA6WjlLNN%2FCapture%20d%E2%80%99e%CC%81cran%202021-10-13%20a%CC%80%2020.14.54.png?alt=media\&token=f5622f35-0727-478e-80ef-bad1a93981c8)

## Fonctionnalités Muppy relatives aux Tasks

L'objet **Task Run** permet de gérer l'exécution des Tasks.

{% content-ref url="tasks-et-fact-collectors/execution-des-tasks-task-runs" %}
[execution-des-tasks-task-runs](https://docs.muppy.io/guides/muppy-core/tasks-et-fact-collectors/execution-des-tasks-task-runs)
{% endcontent-ref %}

Chaque fois qu'un **Script** (ou un **Addon Muppy**) est installé/désinstallé ou que la signature d'une **Task** est modifiée il est nécessaire d'utiliser:&#x20;

{% content-ref url="tasks-et-fact-collectors/synchronisation-des-tasks-et-scripts" %}
[synchronisation-des-tasks-et-scripts](https://docs.muppy.io/guides/muppy-core/tasks-et-fact-collectors/synchronisation-des-tasks-et-scripts)
{% endcontent-ref %}

Les fonctionnalités suivantes permettent d'inspecter les objects liés aux **Tasks**

{% content-ref url="tasks-et-fact-collectors/liste-des-scripts" %}
[liste-des-scripts](https://docs.muppy.io/guides/muppy-core/tasks-et-fact-collectors/liste-des-scripts)
{% endcontent-ref %}

{% content-ref url="tasks-et-fact-collectors/liste-des-tasks" %}
[liste-des-tasks](https://docs.muppy.io/guides/muppy-core/tasks-et-fact-collectors/liste-des-tasks)
{% endcontent-ref %}

{% content-ref url="tasks-et-fact-collectors/liste-des-fact-definitions" %}
[liste-des-fact-definitions](https://docs.muppy.io/guides/muppy-core/tasks-et-fact-collectors/liste-des-fact-definitions)
{% endcontent-ref %}
