Docker et Portainer part 1 – Les conteneurs pour les nuls

Docker et Portainer

Bonjour à tous, aujourd’hui je commence la série de post sur Docker et Portainer suite à la migration du site sur le nouveau serveur. Et pour me faciliter les futures migrations, je me suis enfin décidé à « dockerisé » les applis que j’ai sur la machine… et comme ça je serai pas seul à être confiné dans cette histoire.

Pour votre culture le changement de serveur fait suite à la panne sur le dernier que j’ai décrit ici. Du coup, j’ai en profité pour faire le passage au SSD, ipv6 en natif via l’hébergeur, passage à Debian 10 et j’ai rapatrié le serveur en France aussi tant qu’a y être.

Rappel des articles de la série « Docker et Portainer » :

Lire la suite

Edito : panne serveur !

Ça y est ! J’aurais fini par vous faire le coup de la panne… ceux qui se connectent régulièrement auront remarqué que depuis le 11 mars 2020 et jusqu’à hier soir le site était « down ». Alors c’est ni le COVID-19, ni ma faute (pour une fois) : en effet le serveur précédent a eu une panne. Je vous laisse admirer ce mémorable échange avec l’assistance de chez online.net.

Bon au final après quelques investigations, il s’avère que c’était en fait lié à cet incident chez eux et que l’ancien serveur est retombé en marche un peu après. Mais à ce moment là, moi j’avais déjà démarré mon PRA sur une nouvelle machine. Alors pourquoi ça m’a pris 9 jours à revernir alors me direz vous ? plusieurs raisons :

  1. D’abord, la loi de l’emmerdement maximale est une vraie constante de l’univers… Mercredi dernier (le 11/03 donc et à peu en même temps que l’arrêt serveur), je me suis retrouvé embarqué dans l’équipe « d’urgence » VPN-COVID-19 au boulot… Et j’ai passer les 7 jours suivant à bosser comme un âne pour que tout le monde puisse restez chez soit pendant cette période surréaliste.
  2. Et j’en ai profité pour
Lire la suite

Interroger une base PostGreSQL en PowerShell

Interroger une base PostGreSQL en PowerShell

Bonjour à tous, aujourd’hui on va intéresser aux bases SQL et PowerShell. Et plus exactement comment interroger une base PostGreSQL en PowerShell. Pour cela on va devoir s’y connecter, faire une requête, lire nos résultats en PowerShell et clore la connexion.

Je choisit volontairement PostGreSQL car (j’ai eu besoin de le faire a boulot, déjà) il nécessite que l’on installe au préalable le driver ODBC pour se connecter à la base. En effet si vous utiliser un serveur MSSQL, les dépendances nécessaires sont (en général) déjà livrées avec Windows.

Pour obtenir ce pilote vous pouvez vous connecter sur le site de PostGreSQL ici, télécharger puis installer le fichier MSI. Vous pouvez vérifier que celui ci est bien déployé en allant dans le panneau de configuration-Outils d’administration-Sources de données ODBC (32 ou 64 bits). Les connecteurs PostgreSQL UNICODE et ANSI devrait être présent.

A partir de là, on peut démarrer le code de notre module PowerShell. La première étape consiste à établir la connexion à la base. Et pour cela j’ai développé la Cmd-Let Get-PSSQLDBConnexion ci dessous :

Function Get-PSSQLDBConnexion{
    param(
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Server,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Port,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $DBName,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $Username,
        [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [SecureString] $Password
    )
    
Lire la suite

Extraire le dernier élément de chaque ligne en regex

Extraire le dernier élément de chaque ligne

Bonjour à tous, aujourd’hui un petit TP sur les expressions régulières. J’ai un collègue qui m’a demandé comment on pouvait Extraire le dernier élément de chaque ligne dans un bout de texte de quelques centaines de lignes. Voici un exemple de format :

IP Address 595,537
IPv6 Address 1,443
MAC Address 0
MD5 163,573

La première version de la regex que j’ai proposée est simple au possible :

([^\s]+)$

Qui signifie en gros : « tout, sauf les espaces avant la fin de chaque ligne ». Cette expression a quand même un problème avec ses performances (326 steps sur regex101) dans la mesure le moteur d’évaluation avance dans le texte, il ne part pas de la fin et va donc avancer dans chaque mot avant de « backtracker », si celui ci n’est pas suivi de la fin de ligne.

Du coup, j’ai pu proposer une première version optimisée :

^.*?\s([^\s]+)$

C’est l’une des rares cas que j’ai croisé où l’usage d’un .* rends l’expression plus performante (120 steps sur le même texte) en l’obligeant à aller à la fin de ligne directement avant de matcher le dernier bloc. D’après regex101, on est donc déjà 3 fois plus … Lire la suite