50. Puppet in de praktijk - Type Het hoogste definitieniveau is de Environment Bijvoorbeeld productie, acceptatie of test Types zijn elementen die door Puppet geconfigureerd kunnen worden, zoals: Files, Packages, Services, Cron, User, … Bijvoorbeeld: package { mc: ensure => installed }
51. Puppet in de praktijk – Type package package { mc: ensure => installed } In plaats van: # yum install mc # up2date mc # apt-get install mc # fink install mc # ports install mc # pkg_add mc # emerge mc # pkg-get mc # rpm -Uvh mc-1.8.6.i386.rpm # rug install mc # gem install mc # pkgadd mc
52. Puppet in de praktijk - Class Class heeft een naam en is een verzameling van types. Includes en inherits zijn mogelijk. Bijvoorbeeld: class mc { package { mc: ensure => installed } }
53. Puppet in de praktijk - Node Node is een configuratieblok dat een client vertegenwoordigt. Een node bevat types en/of classes. Includes en inherits zijn mogelijk. Bijvoorbeeld: node basenode { include mc } node 'sansbeheer.santec.beheer' inherits basenode { }
54. Puppet in de praktijk - Definitions Definitions zijn een soort subclass die meer dan eens gebruikt kunnen worden binnen een class. Handig bij bijvoorbeeld vhost definities: define vhost ( $docroot = '' ,$domain = '') { … definities met variabelen .. } apache::vhost { … ”een”: assign variabelen 1 ... … ”twee”: assign variabelen 2 … }
55. Puppet in de praktijk - Templates Een template is een configuratiefile met variabelen. Een template file heeft .erb als extentie Voorbeeld van een regel uit een template: CLIENTHOSTNAME="<%= hostname %>" De hostname wordt hier door Facter (draait op de client) ingevuld.
56. Puppet in de praktijk - module Module is een verzameling classes, definitions, files, templates en/of plugins Een module is portable en staat op zich zelf. Je kunt dus modules uitwisselen met anderen. Er zijn verschillende repositories waar je uitstekende modules kunt vinden.
57. Puppet in de praktijk - modules Typische directory structuur van een module: modulenaam/manifests/ (.pp bestanden. init.pp automatisch) modulenaam/templates/ (.erb bestanden) modulenaam/files/ (voor de fileserver functie) modulesnaam/plugins/
58. Deze twee Debian apt-get install openssh-server vi /etc/ssh/sshd_config /etc/init.d/ssh start RedHat yum install openssh-server vi /etc/ssh/sshd_config /etc/init.d/sshd start
59. Worden in Puppet Puppet package {ssh: ensure => installed} file {sshd_config: name => "/etc/ssh/sshd_config", source => "puppet://server/aps/ssh/sshd_config } service {sshd: ensure => running }
60. Puppet taalattributen Arrays [ “red”, “green”, “blue” ] Variables $variable = value Conditionals If/else statements Case statement Selectors