Self-Service (SelfBundle)

De SOS Paris
Aller à : navigation, rechercher
Self.png
Module Self
Nom Self-service
Version 2.0
Github https://github.com/AriiPortal/SelfBundle

Self-service est un module qui propose un formulaire simple aux utilisateurs afin d'introduire de nouvelles demandes dans le système.

Ce module offre un accès à l'utilisateur pour intégrer des informations qui n'auront pas de conséquence ou qui seront auto-contrôlées. Quelques exemples pour illustrer les cas d'utilisation:

  • l'ajout d'une machine pour un inventaire n'a pas de conséquence dans la mesure où l'erreur sur le nom sera repéré par le système lors de l'exécution qui générera une alerte
  • une demande de livraison ou d'attente de fichier sera auto-contrôlée par le fait qu'il faudra indiquer le fichier attendu
  • la suppression d'une information dans le référentiel de sauvegarde sera corrigée à la prochaine sauvegarde

En résumé, ce module est dédié aux interactions faibles avec le système et qui bénéficieront d'une correction automatique.

Le principe peut être appliqué à des utilisations plus critiques mais il faudra dans ce cas ajouter une couche de sécurité pour fiabiliser le système.

Administration

Ce module n'est pas un libre-service pour la création de tâches, il ne sert qu'à fournir des données utilisateur à des processus existants. Le modèle est défini par l'administrateur à travers un fichier de configuration statique en Yaml. Il définit les champs pour indiquer à l'utilisateur les paramètres attendus.

Exemple de modèle: workspace/Self/fr/CMDB.yml

name:  Inventaire
title: Mise à jour des machines de l'inventaire
form:  |
    {   "type": "radio", 
        "name": "action", 
        "label": "Ajouter la machine", 
        "required": true,
        "value": "add",
        "position": "label-right",
        "labelWidth": 200,
        "labelAlign": "left"
    },
    {   "type": "radio", 
        "name": "action", 
        "label": "Supprimer la machine", 
        "required": true,
        "value": "del",
        "position": "label-right",
        "labelWidth": 200,
        "labelAlign": "left"
    },
    {   "type": "input",    
        "name": "host", 
        "label": "Hôte",
        "required": true,
        "note": {
            "text": "Nom de la machine" 
        }
    }
exec: |
    echo Exécution immédiate
call: |
    echo Exécution différente

Intégration

Formulaire DHTMLx

Exécution (exec et/ou call)

Interface

Self-service.png

Nouvelle demande

Self-request.PNG

Demandes en cours

Les demandes en cours peuvent avoir 4 états différents:

  • QUEUED: la tâche est en file d'attente mais pas encore prise en compte par le client
  • RUNNING: la tâche est prise en compte et en cours d'exécution
  • REFUSED: le système a refusé la demande
  • FAILURE: le client a renvoyé le log et un exit code différent à 0

historique

L'onglet historique affiche les tâches déjà traitées.

  • SUCCESS: le client a renvoyé le log et un exit code égal de 0
  • FAILURE: La tâche a échoué mais on l'historise manuellement

Exécution

L'exécution peut utiliser les différents moyens d'exécution distante proposées par Ari'i.

Agent Open Source JobScheduler

Superviseur Arii

Client ssh

Exécution asynchrone

Une autre solution est l'exécution asynchrone. Dans ce mode, un client ou un agent va chercher l'information sur le serveur, l'exécuter en local et renvoyer le résultat sur le serveur.

Ce mode est adapté aux demandes qui ne nécessitent pas un traitement immédiat en mettant à profit ce temps pour permettre à l'utilisateur une éventuelle annulation de la demande.

Client

Le client est un script perl qui communique avec le self service pour récupérer les tâches, les traiter puis renvoyer le statut. Le principe est de traiter immédiatement la demande afin de renvoyer un statut à l'utilisateur.

Agent

L'agent est un demon qui interroge régulièrement le serveur pour récupérer les tâches en cours. Il doit être le plus autonome possible et donc dialoguer avec Arii pour exécuter les commandes mais surtout pour effectuer les reprises nécessaires en cas de défaillance (batch, réseau, système...).

Mode manuel

Exécution

l'url /self/fr/todo/TACHE permet de récupérer une tâche en file d'attente.

Shell/Batch

l'url /self/fr/sh/TACHE initialise les variables d'environnement pour une commande shell.

l'url /self/fr/cmd/TACHE initialise les variables d'environnement pour une commande windows.

Retour

l'url /self/fr/return/TACHE permet de récupérer une tâche en file d'attente.

Sécurité

Ce type de demande permet de saisir des valeurs de champs dans un processus défini, une erreur de saisie ou une action malintentionnée ne doit pas avoir de conséquence sur la production.

Correction automatique

Généralement, le processus dispose de son propre mécanisme de vérification ou d'alerte en cas d'erreur.

Vérification interne

Une autre méthode consiste à demander une information que seul l'utilisateur peut fournir:

  • nom du fichier en attente
  • nom d'une machine dans une liste
  • éventuellement, un code d'authentification

Protection

Les mécanismes de sécurité courants peuvent être mis en place:

  • authentification
  • protocole https