Windows hallintaan Puppetilla

January 17, 2018 – Samuli Seppänen

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ä:

  1. Powershell DSC
  2. Chocolatey
  3. Powershell Exec provider

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

Want to talk to an expert?

If you want to reach us, just send us a message or book a free call!
menucross-circle