Puppet on jo pitkään tukenut Windowsia. Monet natiivit Puppet-resurssit, kuten File, Package ja Service ovat jo pitkään toimineet sekä *NIX-käyttöjärjestelmissä että Windowsissa. Lisäksi osa natiiveista Puppet-resursseista, kuten Registry on suunniteltu pelkästään Windows-käyttöön.
Puppetin käyttömukavuus Windows-järjestelmien ylläpidossa on parantunut mutkan kautta muutamien uusien teknologioiden myötä:
Powershell DSC perustuu resurssien tilan hallintaan, aivan kuten Puppetkin. Mikä parasta, Puppet-koodissa voi käyttää natiivien Puppet-resurssien lisäksi Powershell DSC-resursseja. Puppetlabsin blogikirjoitus on hyvä alustus tähän aiheeseen. DSC vaatii toimiakseen Powershell 5.0:n, joka tulee Windows Management Framework 5.0:n mukana.
Chocolatey on pakettienhallintajärjestelmä sekä julkinen pakettivarasto Windowsille. Se perustuu Nuget-teknologiaan, jolla ohjelmistokehittäjät ovat perinteisesti asentaneet .NET-sovellusten kirjastoriippuvuuksia. Chocolatey siis laajentaa Nugetista, ohjelmistokehittäjien työkalusta, järjestelmäylläpitäjien työkalun. Käytännössä Chocolatey mahdollistaa Windows-sovelluksien asentamisen komentoriviltä samaan tapaan kuin apt-get Ubuntuissa ja Debianeissa. Hyödyllisimmillään Chocolatey on silloin, kun sitä käytetään Puppetista käsin niin sanottuna Package providerina.
Viimeisenä tulee Powershell Exec provider, jolla voidaan ajaa Powershell-skriptejä Puppetin natiivilla Exec-resurssilla.
Kaikkien kolmen käyttö Puppetissa on varsin yksinkertaista. Alla oletetaan, että Puppetserver on toimintakunnossa ja Windows-kone on liitetty siihen. Aluksi lisätään tarvittavat Puppet-moduulit Puppetserverin modules-hakemistoon:
$ git clone https://github.com/chocolatey/puppet-chocolatey chocolatey $ git clone https://github.com/puppetlabs/puppetlabs-dsc.git dsc $ git clone https://github.com/puppetlabs/puppetlabs-powershell powershell $ git clone https://github.com/Puppet-Finland/puppet-wmf wmf
Moduuleista viimeinen asentaa Windows Management Framework 5.0:n Chocolateyllä.
Tämän jälkeen Windows-koneen yaml-tiedostoon Hierassa lisätään luokka "wmf":
classes: - wmf
Seuraavan Puppet-ajon jälkeen Powershell DSC, Chocolatey Package provider ja Powershell Exec provider ovat valmiita käytettäväksi. Niiden toiminnan voi varmistaa luomalla yksinkertaisen Puppet-moduulin Puppetmasterin modules-kansioon:
$ cd <modules-dir> $ mkdir -p windowstest/manifests
Sitten luodaan tekstitiedosto dsctest/manifests/init.pp, jonka sisältö voi olla vaikka seuraavanlainen:
# class windowstest { dsc_file { 'test': dsc_ensure => 'present', dsc_destinationpath => 'C:dsc_testfile.txt', dsc_contents => 'foobar', } exec { 'testexec': provider => 'powershell', command => 'Add-Content -Path C:exec_testfile.txt -Value foobar', creates => 'C:exec_testfile.txt', } package { 'notepadplusplus': ensure => 'present', provider => 'chocolatey', } }
Sitten muokataan Windows-koneen yaml-tiedostoa Hierassa:
classes: - wmf - windowstest
Lopuksi Windows-koneelta voidaan tarkistaa onko Notepad++ asentunut ja onko Puppet luonut tekstitiedostot DSC:llä ja Powershell Exec providerilla:
> Test-Path 'C:Program FilesNotepad++' True > Get-Content C:dsc_testfile.txt foobar > Get-Content C:exec_testfile.txt foobar