- Icinga 2 – Monitoring automatisiert mit Puppet Teil 1: Installation
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 2: Features
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 3: Plugins
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 4: Konfiguration I
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 5: Konfiguration II
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 6: Agenten
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 7: Objekte aus Hiera erzeugen
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 8: Integration von Icinga Web 2
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 9: Profile
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 10: Profile Part II
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 11: Profile Part III
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 12: Profile Part IV
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 13: Profile Part V
- Icinga 2 – Monitoring automatisiert mit Puppet Teil 14: Profile Part VI
Die heutige Fortsetzung dieser Serie befasst sich mit dem Management einer PHP-Umgebung für daen Betrieb eines Icinga Web 2 auf dem Icinga-Server. Icinga Web 2 benötigt in aktuellen Versionen mindestens ein PHP in der Version 5.6, kommen dann noch Module hinzu, wird damit einhergehend ein PHP 7 oder neuer vorausgesetzt.
Server mit Debian Stretch bekommen ein aktuelles PHP aus ihren eigenen Repositories, bei RedHat 7 muss auf das SCL (Softwarer Collection Linux) Repository zurückgegriffen werden.
[ruby]class profile::icinga2::server(
…
) {
case $::osfamily {
‚redhat‘: {
require ::profile::repo::epel
require ::profile::repo::icinga
require ::profile::repo::scl
$manage_package = false
$manage_repo = false
$php_globals = {
php_version => ‚rh-php71‘,
rhscl_mode => ‚rhscl‘,
}
$php_extensions = { mbstring => {}, json => {}, ldap => {}, gd => {}, xml => {}, intl => {}, mysqlnd => {}, pgsql => {}, },
…
}
‚debian‘: {
$manage_package = true
$manage_repo = true
$php_globals = {}
$php_extensions = { mbstring => {}, json => {}, ldap => {}, gd => {}, xml => {}, intl => {}, mysql => {}, pgsql => {}, },
…
}
default: {
fail("’Your operatingsystem ${::operatingsystem} is not supported.’")
}
}
…[/ruby]
PHP selbst lässt sich mit dem Puppet-Module puppet/php des Projektes Vox Pubuli konfigurieren. Hierbei werden über die Klasse php::globals Einstellungen getätigt, welches PHP, aus welchen Quellen benutzt werden soll. Im Anschluss wir über die Hauptklasse php das Management auf das Betreiben eines FPM (FastCGI Process Manager) eingeschränkt. Dieser lauscht standardmäßig auf TCP-Port 9000 ausschließlich auf localhost.
Neben einem erhöhen des Speicherlimits und dem Setzen der Zeitzone, werden auch die von Icinga Web vorausgesetzten PHP-Extensions aktiviert.
[ruby]
…
#
# PHP
#
class { ‚::php::globals‘:
* => $php_globals,
}
class { ‚::php‘:
ensure => installed,
manage_repos => false,
apache_config => false,
fpm => true,
extensions => $php_extensions,
settings => {
‚PHP/memory_limit‘ => ‚128M‘,
‚Date/date.timezone‘ => ‚Europe/Berlin‘,
},
dev => false,
composer => false,
pear => false,
phpunit => false,
require => Class[‚::php::globals‘],
}[/ruby]
Bei der Klasse profile::repo::scl beschränken wir uns im folgenden Beispiel auf CentOS basierte Systeme, wie es auf RHEL einzubinden ist muss aus der Installations-Dokumentation abgeleitet werden.
[ruby]class profile::repo::scl {
case $::operatingsystem {
‚centos‘: {
package { ‚centos-release-scl‘:
ensure => installed,
}
} # CentOS
default: {
fail("’Your plattform ${::operatingsystem} is not supported.’")
}
} # case
}[/ruby]