Aktivace a deaktivace modulů webového serveru Apache přes Puppet

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

Následující ukázková funkce v kódu v manifestu zajišťuje aktivaci a deaktivaci modulů pro webový server apache2. Příklad je velmi zjednodušený, protože neřeší test konfiguračního souboru. Při použití tohoto ukázkového kódu by v případě neexistujícího modulu došlo k vytvoření prázdného souboru.

Jména modulů, které se budou aktivovat jsou nastaveny jako položky pole v proměnné $enable a ty, které se naopak nesmí v konfiguraci vyskytnout jsou v proměnné $disable. V případě že stávající instance apache2 má některý modul z proměnné $disable aktivovaný, dojde k jeho deaktivaci.

Poznámka
define apachemode($status) {
    	file { "/etc/apache2/mods-available/$name.conf":
        	ensure => present,
    	}
    	exec { "akce-$name-$status":
        	command => "$status $name",
        	path => "/usr/bin:/bin:/usr/sbin:/sbin"
    	}
}

$disable = [ 'auth_digest', 'info' ]
$enable = [ "ssl" ]

apachemode { $enable:
      	status => "a2enmod"
}
apachemode { $disable:
      	status => "a2dismod"
}

Povšimněte si, že v kódu funkce je jméno zdroje typu exec složeno nejenom z předaného jména modulu, ale také z hodnoty proměnné $status. Kdyby tomu tak nebylo, tak by při dalším zavolání funkce Puppet oznámil chybu, jelikož v rámci jednoho scope se nemohou vyskytnout dva shodné názvy objektů.