Sissejuhatus GNU/Linux süsteemi ja selle haldamisse Linux administreerimine I357 Margus Ernits Katrin Loodus 2014
Facter Puppet agendi masinas saame kasutada eeldefineeritud fakte, mida saame muutujatena kasutada: file sudo facter {'/etc/issue': ensure => file, path =>'/etc/issue', mode=>0644, content =>"${operatingsystem ${operatingsystemrelease $ {lsbdistcodename ${ipaddress_eth1 ${fqdn Puppet:${puppetversion",
facter ise loodud faktid Facter fakte saab luua ise fakt=väärtus paaridenga Programme kirjutades Vahel on vaja mõõta faktide kogumise aega facter --timing
facter fakte luua on imelihtne Loome kausta oma faktide jaoks (facter > 1.7) mkdir -p /etc/facter/facts.d/ vim /etc/facter/facts.d/tt.sh chmod +x /etc/facter/facts.d/tt.sh #!/bin/bash for i in {1..10 do echo "fakt$i=v22rtus$i" done http://docs.puppetlabs.com/guides/custom_facts.html
Faktid otse failist.txt laiendiga fail samas faktide kaustas kala=saba aru=kas Toetatakse ka.yaml ja.json faile
Puppet ja passegner Reaalses elus on vaja paigaldada passenger kas apache või nginx peale või ka iseseisva serverina, kuna WEBrick (puppetiga kaasas) ei pea suurtele koormustele vastu http://docs.puppetlabs.com/guides/passenger.html
Sõltuvused ressursside vahel Vahel on vaja tagade, et peale konfiguratsioonifailide muutmist tehtaks teenusele restart service ressurss restarditakse notify abil Sõltuvuse võib seada ka teenuse külge. Näiteks subscribe => File['teenuse.conf'] jälgib faili muutust ja teeb teenusele peale seda restardi Mõnda ressurssi tuleb kirjeldada enne teist before => Ressurss['xyz'] Mõni nõuab eelnevalt mõnda teis require => Ressurss['xyz'] Eelnev -> Järgnev (saab seada järjestusi) File['kala.conf'] -> Service['kala'] File['kala.conf'] ~> Service['kala'] Eelnev ~> Järgnev (saab seada notification järjestust) http://docs.puppetlabs.com/learning/ordering.html
Sõltuvuste näide file { '/etc/varnish/default.vcl': ensure =>file, mode=>644, source =>'puppet:///configs/varnish/default.vcl', file { '/etc/default/varnish': ensure =>file, mode=>644, source =>'puppet:///configs/default/varnish', before => Service['varnish'] service { 'varnish': ensure =>running, enable =>true, subscribe =>File['/etc/varnish/default.vcl'],
Suur ja väiketähed - Package vs package Kui defineerid mingit tüüpi ressurssi, siis kasutad väikest algustähte. Näiteks package {'htop': ensure => latest Kui kasutad ressurssi, siis suure algustähega. Näiteks require Package['htop']
Puppet ressursside sõltuvused require => Service['apache2'] require => Package['apache2'] file { '/var/www/www.planet.zz/index.html': require => File['/var/www/index.html'], file { '/var/www/sales.planet.zz/index.html': require => File['/var/www/www.planet.zz/index.html'], file { '/var/www/inex.html': require => File['/var/www/sales.planet.zz/index.html'], Sõltuvused ressursside vahel võivad minna lõpmatusse tsüklisse
Näide service kasutamisest service { 'eritilollproge': ensure => running, hasstatus => false, status => 'pidof eritilollproge', restart => 'kill -9 $(pidof eritilollproge)', #subscribe => File['/etc/eritilollproge.comf'] file { '/etc/eritilollproge.comf': source => 'puppet:///export/eritilollproge.conf', notify => Service['eritilollproge'], hasstatus => false service eritilollproge status ei toimi, peame ise status skripti pakkuma (vajadusel ka restart skripti/käsu) notify => Service['eritilollproge'], Peale faili muutmist teeme teenusele restardi
Puppet DSL - muutujad $muutuja_nimi="muutuja väärtus" Muutujaid saab manifestides/klassides/moodulites kasutada Skoop Otsitakse lokaalset ja seejärel globaalset. Võib ka määrata :: abil $::ipaddress $klass::muutuja http://docs.puppetlabs.com/puppet/latest/reference/lang_scope. html
Puppet DSL - if if tingimus { Kood, mis täidetakse, kui tingimus on tõene elsif tingimus2 { Kood, mis täidetakse, kui eelnev tingimus oli vale, kuid tingimus2 on tõene else { Kood, mis täidetakse, kui kumbki tingimus ei ole tõene http://docs.puppetlabs.com/puppet/latest/reference/lang_conditional.html
Puppet DSL case lause case $operatingsystem { centos, redhat: { $tere = "RPM" debian, ubuntu: { $tere = "deb" default: { fail("poola keeli valdan not!")
Puppet moodulid Moodulid aitavad kindlat funktsionaalsust koondada ühisele raamistikule vastava struktuuriga Moodulid on lihtsamalt kasutatavad erinevate puppet paigalduste puhul, kuna moodulitel on kindel kataloogistruktuur ja nimereeglid Moodulite loomine on populaarne ja tihti sobib mõni valmis tehtud moodul teie vajadustele. Aga kui ei sobi?
Puppet mooduli tegemine Kus hoitakse puppet mooduleid? puppet master --configprint modulepath Moodulite loomist hõlbustab programm geppetto Allalaadimine http://puppetlabs.github.io/geppetto/download.html Paki geppetto lahti ja suundu geppetto kausta, ning käivita./geppetto Kui geppetto menüüsid ei näita, siis käivita UBUNTU_MENUPROXY=0./geppetto http://docs.puppetlabs.com/geppetto/4.0/index.html Ka lihne vim abiks apt-get install vim-puppet vim-addons install puppet
Puppet mooduli struktuur Moodul asub kaustas /etc/puppet/modules/moodulinimi või teises modulepath parameetriga määratud kaustas. Mooduli kausta sees on oma puukujuline struktuur järgnevate alamkaustadega manifests/ kõik mooduli manifest failid ehk *.pp. files/ failid, mida noded savad alla laadida. templates/ mallid, mille alusel saab agendi masinas faile luua lib/ pluginad, käivitatavad failid ja faktid tests/ or examples/ siit näeb, kuidas moodulit kasutada (ja ka testida) Moodulinimi mooduli metaandmete fail
Mooduli loomine modules/minumoodul/manifests/init.pp init.pp sisaldab klassi, mille nimi ühtib mooduli nimega: class minumoodul { require => Package['caffee'] ensure => 'profit' exec {'rule the world': command => 'make rule world sudo make rule world', unless => '/usr/bin/sleepmode', Mooduli kasutamiseks lisage mõne klassi või node definitsiooni: include minumoodul class {'minumoodul':
Parameetritega klass class kala ($kasonkala = "Siin ei ole kala", $kes ="linnahalli vaht") { notify notify {"Kas siin on kala? ${kasonkala!":, {"Kes sa oled, et sa seda tead? ${kes!": include kala #ei võimalda parameetreid määrata! Kasuta class {'kala':. class {'kala': kasonkala =>'Siin on kala!', kes =>'hääl sinu peas!'
Puppet mallid -- templates Malle saab kasutada puppet poolt hallatavatesse masinatesse failide loomiseks modulename/templates/templatename.erb file {'/etc/pada.conf': ensure => file, require =>Package['modulename'], content => template('modulename/templatename.erb'), Malle kirjutatakse ruby keeles kasutades ruby erb notatsiooni
erb lühikursus Ruby ja meenutab Rails view-d <% ja %> vahel on käivitatav (ruby) kood <%# see on kommentaar -%> <%= puts 'See kood käivitatakse ja tulemus väljastatakse kuna alguses on võrdusmärk' %> <%= puts 'See rida ei lõpe reavahega, kuna märk on sulgeja ees' -%> Siin kasutatakse ruby <%= @klassi_muutujat %>
erb - foreach <% @massiv.each do element -%> <% end -%> See on element: <%= element %>
Puppet template testimine erb -P -x -T '-' minueritivingetemplate.erb ruby -c
Soovitused # This file is managed by Puppet - any manual edits will be lost Tehke endale GIT selgeks ja kommenteerige oma muudatusi puppet parser validate manifestfail.pp puppet-lint manifestfail.pp
Viited (mittekohustuslik abimaterjal) http://example42.com/tutorials/build/deck/advanced / Puppet module cheat sheet http://docs.puppetlabs.com/module_cheat_sheet.pdf Puppet cheat sheet http://docs.puppetlabs.com/puppet_core_types_chea tsheet.pdf
Lõpp! 26/26