Puppeteers Blog

RAL ja järjestelmän tilan muuntaminen puppet-koodiksi

April 24, 2018 

Joskus käy niin että verkosta löytyy huolellisesti vuosien mittaan käsin säädetty, mahdollisesti jo edesmenneeltä sysadminilta peritty taideteos, jonka sielunelämästä ei kukaan enää ymmärrä, ja joka uhkaa romahtaa jos hengittää kohti liian kovaa. Se tuottaa mahdollisesti vielä jotakin yritykselle merkityksellistä palveluakin. Mikä avuksi?

Jos näin on päässyt käymään, tai odotetaan suoritettavan muun toistaiseksi villinä ja vapaana ajelevan järjestelmän hallinta puppetilla, on hyvä palauttaa mieleen, että puppet sisältää RAL-kuoren (Resource Abstraction Layer), jonka avulla voidaan tarkastella sitä miten puppet näkee järjestelmän. RAL-kuoren avulla voidaan järjestelmän tila muuntaa puppet-koodiksi pienellä vaivalla. Esimerkiksi hakemistopuun muuntaminen:

$ find `pwd` | while read file; do puppet resource file $file; done
 file { '/tmp/tmp':
 ensure => 'directory',
 ctime => '2018-03-28 14:58:55 +0300',
 group => '0',
 mode => '0755',
 mtime => '2018-03-28 14:58:55 +0300',
 owner => '0',
 selrange => 's0',
 selrole => 'object_r',
 seltype => 'user_tmp_t',
 seluser => 'unconfined_u',
 type => 'directory',
 }
 file { '/tmp/tmp/tmp':
 ensure => 'directory',
 ctime => '2018-03-28 14:59:14 +0300',
 group => '0',
 mode => '0755',
 mtime => '2018-03-28 14:59:14 +0300',
 owner => '0',
 selrange => 's0',
 selrole => 'object_r',
 seltype => 'user_tmp_t',
 seluser => 'unconfined_u',
 type => 'directory',
 }
 file { '/tmp/tmp/tmp/file':
 ensure => 'file',
 content => '{md5}d41d8cd98f00b204e9800998ecf8427e',
 ctime => '2018-03-28 14:59:43 +0300',
 group => '0',
 mode => '0640',
 mtime => '2018-03-28 14:59:14 +0300',
 owner => '0',
 selrange => 's0',
 selrole => 'object_r',
 seltype => 'user_tmp_t',
 seluser => 'unconfined_u',
 type => 'file',
 }

File-resurssi tarvitsee syötteeksi absoluuttisen polun, joten myös find-komennolle annetaan se. Tämä varmistaa että find myös tulostaa em. putkitukselle absoluuttisen polun.

Ainoa miinus File-resurssien kanssa on se, että owner ja group näkyvät niissä numeerisina. Onkin järkevintä muuntaa numeerisen arvot nimiksi esim. id-komennolla:

$ id -un 0
 root
 $ id -gn 0
 root

Ensimmäinen komento palauttaa käyttäjän 0 (UID=0) nimen ja jälkimmäinen ryhmän 0 (GID=0) nimen.

Samuli Seppänen
Petri Lammi
Author archive
menucross-circle