Puppet (soubory)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Puppet umožňuje na klientské straně zpracovávat konfiguraci několika způsoby.

  • modifikací již existujících konfiguračních souborů
  • nahrazením stávajících, či vytvořením nových konfiguračních souborů

K modifikaci existujících konfiguračních souborů lze používat typy jako je např. user, hosts, & etc.

Pro jejich nahrazení se používá typ file. Ten může pro obsah budoucího konfiguračního souboru použít vygenerovaný obsah, uložený v proměnné, nebo jej načíst ze souboru uloženého na stroji master. Šablony umožňují integrovat obsah z uloženého souboru s kódem programovacího jazyka ruby.

Hotové konfigurační soubory

Poznámka Začínáme-li se s psaním manifestů teprve seznamovat, je nejlepší začít souborem /etc/hosts, který je nezbytnou součástí každého linuxového stroje a na kterém nelze vcelku nic zkazit.

Nejjednodušším způsobem, jak zajistit aby byl tento soubor k dispozici na každém nodu je umístit do třídy basic typ file s parametrem source, s cestou k souboru, kterým agent cílový soubor - v případě že se liší - přeplácne.

Použití jednotného konfiguračního souboru

Poznámka
class basic {
    file {"/etc/hosts":
        source => "/etc/puppet/manifests/obsah_pro_hosts",
    }
}

V tomto případě je třeba splnit několik podmínek:

  1. Soubor musí existovat
  2. Musí mít univerzálně použitelný obsah
  3. Cesta k němu musí být uvedena absolutně
  4. A serverová část Puppetu musí mít do místa kde je uložen přístup[1]

Využití proměnné

a Má-li se obsah tohoto souboru lišit podle nodu, lze udržovat pro každý z nich samostatný soubor. Aby pak Puppet věděl, který má zrovna použít, lze využít proměnné $hostname

Poznámka
class basic {
    file {"/etc/hosts":
        source => "/etc/puppet/manifests/hosts_$hostname.conf",
    }
}

Puppet tak v případě nodu s hostname 'jedna' použije soubor s hosts_jedna.conf a v případě nodu s hostname 'dva' soubor hosts_dva.conf


Zapsání obsahu proměnné do souboru

Než udržovat samostatné soubory, může být pro někoho pohodlnější obsah rovnou vložit do proměnné v manifestu, a pak jej zapsat prostřednictvím parametru content

Poznámka
class basic {
    $hosts = "127.0.0.1 localhost localhost.localdomain
$ipaddress $hostname $hostname.felk.cvut.cz
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
"
    file {"/etc/hosts":
        content => $hosts,
    }
}

Načtení obsahu do proměnné ze souboru

V případě rozsáhlejších souborů lze zkombinovat použití proměnných s načtením společného obsahu do proměnné ze souboru prostřednictvím funkce file:

Poznámka
class basic {
    $hosts_lo = "127.0.0.1 localhost localhost.localdomain"
    $hosts_main = "$ipaddress $hostname $hostname.felk.cvut.cz"
    $hosts_other = file("/etc/puppet/manifests/obsah_pro_hosts")
    file {"/etc/hosts":
        content => "$hosts_lo\n$hosts_main\nhosts_other",
    }
}
Poznámka U řetězců do kterých se vkládají proměnné, jejichž obsah má být na samostatném řádku je třeba umístit konec řádku '\n'. Bez něj by byl obsah proměnných vypsán za sebou, bez odřádkování.
  1. U modulů lze parametr source používat s adresou puppet:///modules/nazev_modulu/soubor_s_obsahem. Master pak hledá soubor v adresáři files, který je součástí modulu.