AutreSécurite

Construire votre référentiel PowerShell à l’aide de BaGet

Plutôt que de mettre des modules ou des scripts à la disposition de tous, vous pouvez les réserver à un public limité, tel que votre organisation ou groupe de travail. De plus, certaines sociétés peuvent souhaiter restreindre l’accès à la PowerShell Galery afin d’avoir un contrôle sur les ressources disponibles au sein de l’entreprise.

Afin d’avoir votre propre espace de stockage, il existe sur le marché plusieurs offres d’hébergement de type NuGet, qui permettent entre autre d’héberger des modules ou des scripts PowerShell. Néanmoins, nous parlerons ici d’un des outils émergents et Open Source : BaGet.

Baget est un serveur basé sur .Net Core, il est donc disponible sur de nombreuses plateformes (Windows, Linux, MacOS, Docker, Kubernetes). Enfin, il s’installe aussi simplement que d’aller acheter une baguette chez votre boulanger préféré.

Comme le démontrent les captures d’écrans ci-dessus, nous sommes sur un outil simple et efficace 🙂

Vous noterez que nous sommes sur un outil en cours de développement, il manque donc encore quelques fonctionnalités afin de rendre cet outil réellement utilisable sur un environnent de production (Authentification AD, gestion des comptes, statistiques, etc.. ).

Installation de BaGet

Linux & Windows

L’installation sur Windows et sur Linux est sensiblement la même. Nous n’avons besoin que d’effectuer l’installation de .Net Core SDK, puis de télécharger la dernière version de BaGet, et enfin de l’exécuter via la commande suivante :

dotnet Baget.dll

Voici une vidéo illustrant l’installation de BaGet.

Docker – Docker Compose

Docker compose est un outil très intéressant de gestion de package. Cet outil permet de lancer vos conteneurs et leurs éventuels liens à partir d’un fichier de configuration écrit au format yaml.

Afin de vous simplifier la vie, voici ci-dessous un exemple de configuration pour installer BaGet sur votre infrastructure Docker.

version: '3.3'

volumes:
  data: {}
  db: {}

services:
  mariadb:
    image: mariadb:latest
    container_name: baget-db
    environment:
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: baget
      MYSQL_USER: baget
      MYSQL_PASSWORD: P@ssw0rd
    volumes:
      - db:/var/lib/mysql
    restart: always
  app:
    image: loicsharma/baget:latest
    container_name: baget-app
    environment:
      - ApiKey=bfef72b2-3b51-447a-a544-63e03d38f0f2
      - Database__ConnectionString=Server=db;User Id=baget;Password=P@ssw0rd;Database=baget;
      - Database__Type=MySql
      - Mirror__Enabled=true
      - Storage__Path=/var/baget/packages
      - Storage__Type=FileSystem
    ports:
      - "5000:80"
    links:
      - mariadb:db
    volumes:
      - data:/var/baget
    restart: always

Pour lancer cette configuration, il vous suffit d’avoir Docker et Docker Compose, puis de suivre les instructions de la vidéo suivante.

Pour lancer le service définitivement, vous pouvez exécuter la commande ci-dessous afin que le service fonctionne en arrière plan.

> docker-compose up -d

Conclusion

BaGet fait partie des outils indispensables en entreprise, mais il manque encore de fonctionnalités afin d’être réellement utilisable en production.

Tags

Thomas ILLIET

Si le développement PowerShell était un art, vous pourriez certainement me considérer comme un artisan au sens noble du terme. Apportant un savoir-faire unique, un amour du travail bien fait et une personnalisation rendant chaque pièce produite parfaitement ciselée au besoin de son commanditaire.
Fermer
Fermer