lumnik. / scénarios Tous les scénarios · English

Un inventaire applicatif aux URLs tapées à la main

Objectif Découper chaque URL en serveur, port et environnement, pour savoir ce qui tourne sur un serveur et ce qui est encore en recette.

La DSI reprend un inventaire applicatif tenu des années dans un tableur.

La colonne URL est tapée à la main:

Le manifeste découpe l'URL en colonnes, sans code.

applications.csv
app_code;owner;url;status
ERP;Finance;https://SRV-ERP-PRD01.corp.local:8443/erp/login;actif
PORTAIL;Ventes;https://srv-erp-prd01.corp.local:8443/portail;actif
CRM;Ventes;http://srv-crm-rec02.corp.local/crm;actif
GMAO;Maintenance; https://srv-gmao-prd01.corp.local:9443 ;actif
PAIE;RH;https://srv-paie-prd01.corp.local/paie;actif
BI;Direction;https://srv-bi-dev01.corp.local:3000/dash;actif
QUALITE;Production;https://Srv-Qual-Rec01.corp.local/qualite;actif
INTRANET;Communication;https://intranet.corp.local;actif
EDI;Logistique;ftp://srv-edi-prd01.corp.local:21;actif
WIKI;DSI;https://wiki.corp.local;retiré
ANCIEN-CRM;Ventes;http://srv-crm-prd01.corp.local/crm;retiré
TICKETS;DSI;https://srv-tickets-prd02.corp.local/;actif
$ lm entity get application_c --limit 100
APP_CODE  OWNER          URL                                              SCHEME  SERVER                        PORT  ENVIRONMENT      _CONFLICTS
BI        Direction      https://srv-bi-dev01.corp.local:3000/dash        https   srv-bi-dev01.corp.local       3000  développement    {}
CRM       Ventes         http://srv-crm-rec02.corp.local/crm              http    srv-crm-rec02.corp.local            recette          {}
EDI       Logistique     ftp://srv-edi-prd01.corp.local:21                                                            hors-convention  {}
ERP       Finance        https://srv-erp-prd01.corp.local:8443/erp/login  https   srv-erp-prd01.corp.local      8443  production       {}
GMAO      Maintenance    https://srv-gmao-prd01.corp.local:9443           https   srv-gmao-prd01.corp.local     9443  production       {}
INTRANET  Communication  https://intranet.corp.local                      https   intranet.corp.local                 hors-convention  {}
PAIE      RH             https://srv-paie-prd01.corp.local/paie           https   srv-paie-prd01.corp.local           production       {}
PORTAIL   Ventes         https://srv-erp-prd01.corp.local:8443/portail    https   srv-erp-prd01.corp.local      8443  production       {}
QUALITE   Production     https://srv-qual-rec01.corp.local/qualite        https   srv-qual-rec01.corp.local           recette          {}
TICKETS   DSI            https://srv-tickets-prd02.corp.local/            https   srv-tickets-prd02.corp.local        production       {}
$ lm entity get application_c --filter server=srv-erp-prd01.corp.local
APP_CODE  OWNER    URL                                              SCHEME  SERVER                    PORT  ENVIRONMENT  _CONFLICTS
ERP       Finance  https://srv-erp-prd01.corp.local:8443/erp/login  https   srv-erp-prd01.corp.local  8443  production   {}
PORTAIL   Ventes   https://srv-erp-prd01.corp.local:8443/portail    https   srv-erp-prd01.corp.local  8443  production   {}

$ lm entity get application_c --filter environment=recette
APP_CODE  OWNER       URL                                        SCHEME  SERVER                     PORT  ENVIRONMENT  _CONFLICTS
CRM       Ventes      http://srv-crm-rec02.corp.local/crm        http    srv-crm-rec02.corp.local         recette      {}
QUALITE   Production  https://srv-qual-rec01.corp.local/qualite  https   srv-qual-rec01.corp.local        recette      {}

$ lm entity get application_c --filter environment=hors-convention
APP_CODE  OWNER          URL                                SCHEME  SERVER               PORT  ENVIRONMENT      _CONFLICTS
EDI       Logistique     ftp://srv-edi-prd01.corp.local:21                                     hors-convention  {}
INTRANET  Communication  https://intranet.corp.local        https   intranet.corp.local        hors-convention  {}

Limites

  • regex-extract ne compte pas un raté: un motif qui ne lit pas une ligne laisse ses colonnes vides sans alerte, et un default en aval peut les remplir.
  • default remplit une constante: le port d'un protocole n'est pas déduit.
  • Inventaire synthétique.

DSI · inventaire

Qu'est-ce qui tourne sur ce serveur?

L'inventaire existe, dans un tableur.

Une URL par application, tapée à la main depuis des années.

Inventaire synthétique

Le problème

Une URL n'est pas une colonne.

  • SRV-ERP-PRD01 et srv-erp-prd01.
  • Des espaces collés.
  • Un port tantôt là, tantôt absent.

Rien n'est modifié

Le tableur reste tel quel.

  • lumnik lit chaque URL.
  • Il la découpe: serveur, port, environnement.
  • Les applications retirées sont écartées et comptées.

Ce qu'il a fallu écrire

- lookup:
    column: environment
    table: { prd: production,
             rec: recette }

Le nom du serveur dit l'environnement.

Le scénario complet tient en 2 fichiers de déclaration, 60 lignes.

Les réponses

Les questions de la DSI, en un filtre.

  • srv-erp-prd01: ERP et PORTAIL.
  • En recette: CRM et QUALITE.
  • Hors convention: INTRANET et EDI.

La limite

Un motif qui ne lit pas une ligne ne le dit pas.

  • EDI, en ftp://, reste sans serveur.
  • Le port d'un protocole n'est pas deviné.

Essayer

Le scénario se rejoue de bout en bout.

Un connecteur, une entité: chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →