|
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