Intégration continue de scripts PowerShell (CI)*

Intégration continue de scripts PowerShell

*avec Azure Pipelines et GitHub

Salut à tous, vous rappelez la semaine dernière on avait parlé du module Pester pour faire des tests en PowerShell ? Cette semaine je vais vous montrer comment on fait de l’intégration continue de scripts PowerShell et l’automatisation des tests dans Azure DevOps. Notez que vous entendrez aussi parler de CI, pour Continuous Integration en anglais.

C’est quoi l’intégration continue ?

Les mots clés qui vont avec intégration continue sont :

  • automatiser ;
  • sa gestion de versions ;
  • ses tests ; et
  • être notifié de tout ça.

Pour ceux qui développent souvent, je dois enfoncer des portes ouvertes là. Pour les autres, il s’agit de d’industrialiser le déploiement de son code, sans passer forcément (mais on peut) par les lourds processus traditionnels de développement : qualification, alpha, bêta, release candidate, version de prod, etc.

Les avantages de mettre de la « CI » dans vos cafés dev sont multiples : meilleure qualité du code, suivi des développements, reporting automatisé pour les managers, diminution des délais de mise en prod, et j’en passe.

GitHub, et Azure Pipeline

Dans le dernier article, je vous ai montré comment on écrit des tests en PowerShell avec le module PesterLire la suite

Tests des scripts PowerShell : arrêter de « Pester »

tests des scripts PowerShell

Salut à tous ! aujourd’hui on va se pencher à l’intégration continue en PowerShell et plus particulièrement les tests des scripts PowerShell avec le module PowerShell Pester.

Les tests ? on s’en fou… yolo, non?

Alors, non… les tests on s’en passe, certes, bien sur les petits SI, ou pour les bout de scripts en read-only à usage unique. Mais dès que vous commencez à vouloir maintenir votre code dans le temps… Les tests ça devient bel investissement, car si effectivement c’est pas passionnant à écrire, ils permettent quand même de spécifier clairement les entrées et les sorties attendus de vos scripts et donc de s’assurer que celles-ci ne seront pas modifiée lors de vos futures mise à jour.

Donc, pour répondre à la question : dois-je écrire un jeu de tests pour mon code ? j’aurais tendance à dire :

  1. Si votre code est destiné à avoir une durée de vie supérieure à quelques mois : oui.
  2. Sinon, c’est à évaluer en fonction de la « criticité » du script que vous comptez exécuter. Exemple : un script qui modifie 150 000 comptes utilisateurs de manière d’un côté, ou de l’autre côté celui test si le port
Lire la suite

Fonction Copy as path sous Windows

Copy as path

Salut à tous, je vous fait une très brève aujourd’hui. Il y a un pote qui m’a fait découvrir la fonction « copy as path » de l’explorer Windows. C’est très con mais je connaissais pas, et jusque là je me faisais suer à copier le chemin puis le nom du fichier quand j’avais besoin d’un chemin complet vers le fichier.

Bref, il vous suffit d’appuyer sur « Maj. » en même temps que vous cliquez avec le bouton droit de votre souris sur le fichier dans l’explorateur. Et pouf la fonction « copy as path » apparait (« Copier en tant que chemin d’accès » en Français). Un coup de Ctrl-V et vous allez coller le full path vers le fichier, dans votre console PowerShell par exemple.

Voilà, c’est tout con, mais parfois il ne faut pas grand chose pour se changer la vie… Si ça peut en aider un ou deux !… Lire la suite

Splunk certbot et Let’s Encrypt App

Splunk certbot et Let's Encrypt

Je continue un peu sur Splunk, ce coup-ci j’ai fait une TA Splunk certbot et Let’s Encrypt. J’en ai eu un peu marre de déboguer les enrôlements certbot sans Splunk. Donc comme la dernière fois, j’ai fait une TA supportant le format de log de certbot actuel (versions 0.28.0). J’ai appliqué la même démarche que pour VSFTPD et fail2ban avec le Splunk Add-on Builder.

CLI Packaging

A la nuance qu’au moment de publier, j’ai fait l’update vers Splunk 8 qui m’a cassé le Add-on Builder… du coup j’ai du terminer en mode fichier et faire mes dernières modifs en mode CLI et par exemple packager avec :

./splunk package app TA-certbot

TLDR, elle est où cette TA Splunk certbot et Let’s Encrypt ?

Comme d’habitude, vous la trouverez sur la Splunkbase :

https://splunkbase.splunk.com/app/4758/

Modification de Limits.conf

Notez qu’il y a un configuration spécifique pour cette app. La regex que j’utilise est « un peu violente » (cf. explications ci-dessous). Du coup pour quelle soit fonctionnelle, il se peut (mais à priori ça marche quand même sans) que vous deviez modifier votre fichier limits.conf et rajouter le stanza suivant :

[rex]
depth_limit = 100000

Ce réglages permet d’augmenter la récursivité … Lire la suite