Paketverwaltung mit Chocolatey

Versüßte Administration

Softwareverwaltung muss unterschiedliche Standards und Dateitypen verarbeiten, so etwa CGI/Win, NuGet oder MSI, um nur drei zu nennen. Ein Integrator der verschiedenen Varianten der Installation erleichtert die automatisierte Verarbeitung – warum nicht in Form von Schokolade? Wir zeigen, wie Chocolatey Admins die Arbeit versüßt.
Firmen benötigen zunehmend eine flexible IT, die sich schnell an die aktuellen Anforderungen anpassen lässt. Der Königsweg dorthin ist die Hybrid Cloud, bei ... (mehr)

Microsoft entwickelte einen Paketmanager-Manager mit dem PowerShell-Modul "OneGet". Chocolatey [1] ist der Vorgänger dieses Ansatzes mit einer bis jetzt hohen Verbreitung. Eine weitere Besonderheit von Chocolatey betrifft die Art der Bereitstellung. Im Microsoft-Umfeld ist die Interaktion zwischen System und Administrator traditionell sehr auf grafische Tools und Oberflächen ausgerichtet. Die Installation von Softwarepaketen macht da keine Ausnahme: MSI- oder EXE-Dateien werden gesucht und per Interaktion die Software installiert. Die Veränderung dieser prinzipiellen Arbeitsweise durch verstärkten Einsatz von Scripting bietet generell folgende Vorteile:

- Softwareinstallation per Skript ist nachvollziehbar und dokumentiert.

- Durch die Integration von Verzweigung, Logdateien und Fehlerbehandlung ist die Verarbeitung nachvollziehbar.

- Ereignisorientierte Ansätze (Zeit, Systemzustand, Versionierung) sind implementierbar.

Chocolatey ist einer der ersten populären Paketmanager, der vollständig skriptfähig ist. Im Gegensatz zu manuellen Installationen fügt Chocolatey Programme im Hintergrund hinzu, aktualisiert sie und deinstalliert sie, wobei alle Benutzerinteraktionen durch Anweisungen ersetzt werden können. Chocolatey wird in mehreren Varianten angeboten: Als Open-Source-Software darf und wird diese Version angepasst und weiterentwickelt, es gibt aber auch lizenzierte Versionen mit erweiterten Funktionen. Dazu gehört unter anderem

- Support über E-Mail und Telefon.

- Bereitstellung von NuGet-Paketen aus eigenen Quellen.

- Malware-Schutz.

- Paketsynchronisation.

- Erstellung eigener Pakete aus installierter Software.

Die technische Seite

Basis von Chocolatey sind "NuGet"-Pakete, die genutzt werden, um eine Paketverwaltungsumgebung für Windows bereitzustellen. Ein NuGet-Paket ist eine komprimierte Datei mit der Erweiterung ".nupkg". Diese enthält den kompilierten Code (DLLs) und andere damit zusammenhängende Dateien. Definiert werden die Abhängigkeiten durch ein beschreibendes Manifest, das Informationen wie die Versionsnummer des Pakets enthält.

Die Besonderheit von Chocolatey im Gegensatz zu anderen Paketmanagern ist die schon erwähnte leistungsstarke Schnittstelle zur Kommandozeile. Dies ermöglicht, Software mittels eines einzigen Befehls zu installieren. Intern adressieren Chocolatey-Befehle "Nuget-Feeds". Diese bieten ein Verzeichnis der verfügbaren Installationspakete an, die zur Installation bereitstehen. Die Pakete selbst wiederum beinhalten auch ein wenig PowerShell-Code, was die Adressierbarkeit verbessert. Für die Software- und Systemverwaltung stehen unterschiedliche Quellentypen bereit:

- Installer-Paket: enthält ein Installationsprogramm. Alles in der Vorlage ist auf diese Art von Paket ausgerichtet.

- Zip-Paket: lädt und entpackt Archive, entpackt und führt ein Installationsprogramm mit "Install-Chocolatey InstallPackage" als sekundären Schritt aus.

- Config-Paket: setzt die Konfiguration wie etwa Dateien, Registrierungsschlüssel et cetera.

- Erweiterungspaket: ergänzt Chocolatey um PowerShell-Funktionen.

- Portable-Package: enthält Laufzeitbinärdateien (oder entpackt sie als Zip-Paket) und benötigt keine administrativen Berechtigungen für die Installation oder Verwendung.

- Vorlagenpaket: Pakete, die Vorlagen hinzufügen über »choco new -t = name« .

Batch-typische Syntax

Für die Bereitstellung der Konsolenschnittstelle wird im ersten Schritt die PowerShell mit erhöhten Rechten gestartet. Im nächsten Schritt wird das Installationsskript geladen und ausgeführt:

$choco = (new-object net.webclient). DownloadString('https://chocolatey.org/install.ps1')
Invoke-Expression $choco;

Optional ist es zudem möglich, die Umgebungsvariable "PATH" anzupassen:

$ENV:PATH += ";$ENV:ALLUSERSPROFILE\chocolatey\bin"

Die Befehle von Chocolatey sind keine Cmdlets und nutzen nicht die PowerShell-typische Struktur "Verb-Noun". Einzige Ausnahme: "Initialize-Chocolatey". Hier funktioniert auch die aus der PowerShell bekannte interaktive Hilfe mit "get-help". Ansonsten gleicht der Aufruf eines "choco"-Kommandos eher einem Batch-Befehl. Üblich sind Optionen, die per Schalter übergeben werden. Generell besteht eine Chocolatey-Anweisung aus dem Schlüsselwort "choco", gefolgt von einer Aktion, einem Argument und optionalen Schaltern.

Für die Administration von Chocolatey ist die Anwendung in "Features" unterteilt. Diese können aktiviert oder deaktiviert werden. Den aktuellen Status zeigt

> choco feature list

an. Möchten Sie den Malware-Check von Chocolatey aktivieren, lautet die Syntax:

> choco feature enable -n=viruscheck

Alle verfügbaren Aktionen von Chocolatey finden Sie in der Tabelle "Chocolatey-Aktionen".

Chocolatey-Aktionen

Aktion

Bedeutung

list

Auflistung aller lokalen und entfernten Pakete.

search

Alias für list-Befehl.

info

Paketinformationen abrufen.

install

Pakete installieren.

pin

Update für ein Paket unterdrücken.

outdated

Zeigt veraltete Pakete an.

upgrade

Paket updaten.

uninstall

Deinstallationsroutine aufrufen.

push

Kompiliertes nupkg-Paket hochladen.

new

Generiert Dateien, die für ein Chocolatey Paket benötigt werden.

source

Verwaltung der Quellen.

config

Ruft die Konfigurationsdateieinstellungen ab.

feature

Anzeige und Konfiguration der Komponenten.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023