Dags att installera Apache på en nod med hjälp av Puppet. Antingen skriver man en hel definition över allt eller så utvecklar man en modul till det. Det tredje och oftast enklaste alternativet är att använda en färdig modul som man laddar direkt från Puppet. Här använder vi oss av puppetlabs modul för apache som man hittar i Puppet Forge.
Moduler från forge är enkla att installera bara att skriva puppet module install Modulnamn.
$ sudo puppet module install puppetlabs-apache
Notice: Preparing to install into /etc/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-apache (v1.6.0)
├── puppetlabs-concat (v1.2.4)
└── puppetlabs-stdlib (v4.8.0)Modulen är nu installerad och vi kan nu ange dess class för att installera Apache på klienten. Vi lägger till nod-definitionen i standardmanifesten. För att vi ska kunna aktivera php moden så måste vi se till att apache använder mpm modulen prefork. Det gör vi genom att lägga till raden mpm_module => 'prefork'
$ sudo joe /etc/puppet/manifest/site.pp
class { 'apache':
mpm_module => 'prefork'
}
Så installeras apache på noden med standard modulerna för den distribution som körs. För Ubuntu/Debian är det modulerna Authn_core och reqtimout. För att lägga till mer så finns det klasser som vi anropar i manifesten. För en komplett lista se puppetlabs dokumentation.
Deflate är modulen i apache som tar hand om komprimeringen. För att inkludera den på noden så skriver vi följanden i manifesten.
class { 'apache::mod::deflate': }Därefter lägger vi till php modulen.
class { ' apache::mod::php' :
}Efter att inställningarna har gått igenom på klienten så har vi apache installerat med php modulen. Fast vi har ju inte definiterat några sajter än! Det gör vi med hjälp av klassen apache::vhost. I vhost lägger vi även till om vi ska ändra några inställningar i php. Det görs med hjälp av php_values, php_flags, php_admin_values och php_admin_flags. Här nedan ändras hur mycket minne som kan användas till 128 MB.
apache::vhost { 'example.com':
servername => 'www.example.com',
port => '80',
docroot => '/var/www/example.com',
serveraliases => ['example.com'],
php_admin_values => [
'memory_limit 128M'
],
directoryindex => ['index.html, index.htm, index.php '],
}Rätt självförklarande vad de olika alternativen gör. Vill vi definiera en ip-baserad vhost så lägger man till ip => '192.168.0.1', innuti hackklammerna ovan.
.htaccess aktiverar man med nedanstående, ange en lista med vad som ska vara tillåtet att ändra i htaccess. För att tillåta allt anges "All".
directories => [
{ path => '/var/example.com',
allow_override => ['AuthConfig', 'Indexes'],
},
]Mer alternativ för vhost finns i den officiella dokumentationen från puppetlabs.
Testa ändringarna på noden med
$ sudo puppet agent --test