Chocolatey

Chocolatey er en pakkebehandler for Windows som ligner på det man er vant med i Linux-verdenen. Den har en gratis-versjon og en betalt versjon - vi bruker førstnevnte.

Vårt oppsett

Vi bruker to pakkerepositories. Ekstern programvare henter vi fra Chocolatey sitt offisielle repository, som i stor grad distribuerer up-to-date programvare. For intern programvare har vi et privat repository i cassarossa:/export/cassarossa/ymse/choco10/packages, som deles via Samba\\samba.samfundet.no\choco10. Her har vi blant annet Office-installasjon og PowerShell-skript.

For å kjøre Chocolatey regelmessig støvler vi alle Windows-maskiner hver natt klokken 04. Når de starter opp har vi en GPO som kjører skriptet \\ad.samfundet.no\sysvol\ad.samfundet.no\scripts\chocolatey.ps1. Dette skriptet sjekker at Chocolatey er installert, og utbedrer eventuelt dét. Deretter gjør skriptet en GET til https://choco.samfundet.no/api/getclass.pl?sid=SID for å finne ut hvilken pakkeklasse som skal brukes. Basert på dette installeres pakkelistene i \\samba.samfundet.no\choco10\classes\KLASSE. Dersom pakkelisten ender på .force.config vil pakken installeres hver gang Chocolatey kjøres, i motsetning til .config -filer som bare kjører når det er ny versjon tilgjengelig.

Lisenser

Oversikten over hvilke lisenser vi har og hvor mange som er i bruk finner du på https://choco.samfundet.no/licenses.pl. Dette systemet er felles for Windows- og Office-lisenser, og er ansvarlig for å opprette og vise bruk av lisenser. Rapporteringen skjer via winreport, og selve installasjonsprosessen er derimot helt forskjellig mellom Windows og Office.

Windows-lisenser

Windows-lisenser installeres ved at SUWI10 gjør et HTTP-kall til https://choco.samfundet.no/api/getlicense.pl. API-kallet oppretter en lås på lisensen, og SUWI får produktnøkkelen som svar. En slik lås regnes som et bruk av en lisens, men forsvinner etter en halvtime. Dette gjør vi for å hindre at to maskiner som installeres samtidig skal bruke lisenser som egentlig er oppbrukt. Winreport kjører nemlig helt til slutt i installasjonsprosessen, så det er først når man er ferdig med installasjonen at https://choco.samfundet.no/ oppfatter at lisensen er tatt i bruk.

Office-lisenser

Office-lisenser installeres ved at produktnøkkelen er hardkodet i installasjonsskriptet til pakken office2019standard.

Klassesystemet

Ettersom ikke alle maskiner skal ha samme pakker, har vi et tilhacket pakkeklassesystem. Det er veldig simpelt. Alle kataloger i /export/cassarossa/ymse/choco10/classes regnes som en klasse, og symlinker til .config -filer under classes/ definerer hvilke pakker en klasse skal ha. Alle maskiner begynner med klassen default, men dette kan endres på nettsiden. Merk at maskinen må gjennom en omstart for at endringene skal tre i kraft. Når Windows-klientene så kjører \sysvol\ad.samfundet.no\scripts\chocolatey.ps1 ved oppstart, gjør de et HTTP-kall til https://choco.samfundet.no/api/getclass.pl, og de installerer selv passende .config -filer.

Skript vi kjører

winreport
Dette skriptet spør maskinen om diverse informasjon, herunder hardware, disker, lisensstatus og nettverkskort. Dette brukes til å lage en XML-fil som deretter legges i \\samba.samfundet.nochoco10winreport. Senere leses denne files av en cron-jobb som kjører /var/www/samfundet.no/choco/bin/winreport-digest.pl, som i sin tur leser XML-filene og legger innholdet deres under skjemaet choco i databasen pst. Denne informasjonen vises senere på choco.samfundet.no.
installprinters
Dette skriptet spør https://choco.samfundet.no/api/listprinters.pl etter hvilke printere som er tilgjengelige, og får et svar basert på lpstat -a kjørt på cassarossa. Deretter ser installprinters i lokale registernøkler etter hvilke printere som allerede er installert, og installerer de som mangler.

Pakkeformatet til Chocolatey

Chocolatey er egentlig bare en wrapper rundt NuGet, som er et verktøy for å installere og holde styr på .NET-biblioteker. Pakker må derfor være zippede arkiver med endelsen .nupkg, og innholdet må følge en bestemt standard. Hos oss gjør skriptet /export/cassarossa/ymse/choco10/source/build.sh det meste av magien, og sørger for at følgende er til stede:

./[Content_Types].xml
XML-fil som definerer MIME-typer. For at en fil skal pakkes med nupkg-en filendelsen defineres her.
./example.nuspec
XML-fil som definerer pakkens navn, beskrivelse osv.
./_rels/.rels
XML-fil som definerer pakkens filer.
./tools/
Filer brukt av installeren.

For at Chocolatey skal vite hvordan pakken skal installeres må man også ha med et PowerShell-skript:

./tools/chocolateyInstall.ps1
Et PowerShell-skript som kjøres av installeren.

Til slutt, hvis pakken skal autoinstalleres, må den defineres i en .config -fil. Du finner dem i cassarossa:/export/cassarossa/ymse/choco10/classes. Husk at hvis pakken skal installeres hver gang Chocolatey kjører, må filen ende i .force.config.

Lage ny pakke

Når du skal lage en ny pakke starter du i cassarossa:/export/cassarossa/ymse/choco10/source

choco10/source$ cp -r source/example source/PAKKENAVN
choco10/source$ cd source/PAKKENAVN
choco10/source/PAKKENAVN$ mv example.nuspec PAKKENAVN.nuspec 
choco10/source/PAKKENAVN$ vim PAKKENAVN.nuspec # Endre metadata. Versjonnummer skal være ÅRMÅNEDDATO.SEKVENS
# Kopier inn nødvendige filer til choco10/source/PAKKENAVN/tools. Det er viktig at
# eventuelle filendelser er definert i choco10/source/.template/[Content_Types].xml
choco10/source/PAKKENAVN$ vim tools/chocolateyInstall.ps1 # Endre installasjonsskript
choco10/source/PAKKENAVN$ ../build.sh PAKKENAVN # Zipper filene og legger dem rett sted
choco10/source/PAKKENAVN$ cd ../../classes # Rediger .config-filer som skal ha pakken i seg

Chocolatey er brukket.

Hjelp!

Lenker: Start, klientmaskiner, suwi10

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2023-11-28 15:19 | Revisjon: 18 (historie, blame) | Totalt: 1905 kB | Rediger