|
1 | 1 | # @summary This will install and configure the zabbix-agent deamon
|
| 2 | +# @param ensure Ensure that the agent is either present or absent |
2 | 3 | # @param zabbix_version This is the zabbix version.
|
3 | 4 | # @param zabbix_package_state The state of the package that needs to be installed: present or latest.
|
4 | 5 | # @param zabbix_package_agent The name of the agent package that we manage
|
|
147 | 148 | #
|
148 | 149 | # @author Werner Dijkerman [email protected]
|
149 | 150 | class zabbix::agent (
|
| 151 | + Enum['absent', 'present'] $ensure = 'present', |
150 | 152 | $zabbix_version = $zabbix::params::zabbix_version,
|
151 | 153 | $zabbix_package_state = $zabbix::params::zabbix_package_state,
|
152 | 154 | $zabbix_package_agent = $zabbix::params::zabbix_package_agent,
|
|
232 | 234 | ) inherits zabbix::params {
|
233 | 235 | $agent2 = $zabbix_package_agent == 'zabbix-agent2'
|
234 | 236 |
|
| 237 | + # Set up overrides if the ensure parameter is set to 'absent' |
| 238 | + $dir_ensure = $ensure ? { 'absent' => $ensure, default => 'directory' } |
| 239 | + $file_ensure = $ensure ? { 'absent' => $ensure, default => 'file' } |
| 240 | + $include_dir_force = $ensure ? { 'absent' => true, default => undef } |
| 241 | + $_include_dir_purge = $ensure ? { 'absent' => true, default => $include_dir_purge } |
| 242 | + $_manage_repo = $ensure ? { 'absent' => false, default => $manage_repo } |
| 243 | + $_service_enable = $ensure ? { 'absent' => false, default => $service_enable } |
| 244 | + $_service_ensure = $ensure ? { 'absent' => 'stopped', default => $service_ensure } |
| 245 | + $_zabbix_package_state = $ensure ? { 'absent' => $ensure, default => $zabbix_package_state } |
| 246 | + |
235 | 247 | # Find if listenip is set. If not, we can set to specific ip or
|
236 | 248 | # to network name. If more than 1 interfaces are available, we
|
237 | 249 | # can find the ipaddress of this specific interface if listenip
|
|
276 | 288 | # Only include the repo class if it has not yet been included
|
277 | 289 | unless defined(Class['Zabbix::Repo']) {
|
278 | 290 | class { 'zabbix::repo':
|
279 |
| - manage_repo => $manage_repo, |
| 291 | + manage_repo => $_manage_repo, |
280 | 292 | zabbix_version => $zabbix_version,
|
281 | 293 | }
|
282 | 294 | }
|
|
291 | 303 | } else {
|
292 | 304 | assert_type(Stdlib::Windowspath, $zabbix_package_source)
|
293 | 305 | package { $zabbix_package_agent:
|
294 |
| - ensure => $zabbix_package_state, |
| 306 | + ensure => $_zabbix_package_state, |
295 | 307 | tag => 'zabbix',
|
296 | 308 | provider => $zabbix_package_provider,
|
297 | 309 | source => $zabbix_package_source,
|
|
302 | 314 | else {
|
303 | 315 | # Installing the package
|
304 | 316 | package { $zabbix_package_agent:
|
305 |
| - ensure => $zabbix_package_state, |
| 317 | + ensure => $_zabbix_package_state, |
306 | 318 | require => Class['zabbix::repo'],
|
307 | 319 | tag => 'zabbix',
|
308 | 320 | provider => $zabbix_package_provider,
|
|
336 | 348 |
|
337 | 349 | # Controlling the 'zabbix-agent' service
|
338 | 350 | service { $servicename:
|
339 |
| - ensure => $service_ensure, |
340 |
| - enable => $service_enable, |
| 351 | + ensure => $_service_ensure, |
| 352 | + enable => $_service_enable, |
341 | 353 | require => $service_require,
|
342 | 354 | }
|
343 | 355 |
|
|
352 | 364 |
|
353 | 365 | # Configuring the zabbix-agent configuration file
|
354 | 366 | file { $agent_configfile_path:
|
355 |
| - ensure => file, |
| 367 | + ensure => $file_ensure, |
356 | 368 | owner => $agent_config_owner,
|
357 | 369 | group => $agent_config_group,
|
358 | 370 | mode => '0644',
|
|
364 | 376 |
|
365 | 377 | # Include dir for specific zabbix-agent checks.
|
366 | 378 | file { $include_dir:
|
367 |
| - ensure => directory, |
| 379 | + ensure => $dir_ensure, |
368 | 380 | owner => $agent_config_owner,
|
369 | 381 | group => $agent_config_group,
|
| 382 | + force => $include_dir_force, |
370 | 383 | recurse => true,
|
371 |
| - purge => $include_dir_purge, |
| 384 | + purge => $_include_dir_purge, |
372 | 385 | notify => Service[$servicename],
|
373 | 386 | require => File[$agent_configfile_path],
|
374 | 387 | }
|
|
394 | 407 | # https://support.zabbix.com/browse/ZBX-11631
|
395 | 408 | if fact('os.selinux.enabled') == true and $manage_selinux {
|
396 | 409 | selinux::module { 'zabbix-agent':
|
397 |
| - ensure => 'present', |
| 410 | + ensure => $ensure, |
398 | 411 | content_te => template('zabbix/selinux/zabbix-agent.te.erb'),
|
399 | 412 | before => Service[$servicename],
|
400 | 413 | }
|
|
0 commit comments