|  | 
| 9 | 9 |   $indexer_server_ip = 'localhost', | 
| 10 | 10 |   $indexer_server_port = '9200', | 
| 11 | 11 |   $dashboard_path_certs = '/etc/wazuh-dashboard/certs', | 
|  | 12 | +  $dashboard_fileuser = 'wazuh-dashboard', | 
|  | 13 | +  $dashboard_filegroup = 'wazuh-dashboard', | 
| 12 | 14 | 
 | 
| 13 |  | -  $dashboard_server_port = '5601', | 
|  | 15 | +  $dashboard_server_port = '443', | 
| 14 | 16 |   $dashboard_server_host = '0.0.0.0', | 
| 15 |  | -  $dashboard_server_hosts ="https://${indexer_server_ip}:$indexer_server_port}", | 
| 16 |  | -  $dashboard_wazuh_api_credentials = [ { | 
| 17 |  | -                                      'id'       => 'default', | 
| 18 |  | -                                      'url'      => 'http://localhost', | 
| 19 |  | -                                      'port'     => '55000', | 
| 20 |  | -                                      'user'     => 'foo', | 
| 21 |  | -                                      'password' => 'bar', | 
| 22 |  | -                                    }, | 
| 23 |  | -                                  ] | 
|  | 17 | +  $dashboard_server_hosts = "https://${indexer_server_ip}:${indexer_server_port}", | 
|  | 18 | +  $dashboard_wazuh_api_credentials = [ | 
|  | 19 | +    { | 
|  | 20 | +      'id'       => 'default', | 
|  | 21 | +      'url'      => 'https://localhost', | 
|  | 22 | +      'port'     => '55000', | 
|  | 23 | +      'user'     => 'foo', | 
|  | 24 | +      'password' => 'bar', | 
|  | 25 | +    }, | 
|  | 26 | +  ], | 
|  | 27 | + | 
|  | 28 | +  $manage_repos = false, # Change to true when manager is not present. | 
| 24 | 29 | ) { | 
|  | 30 | +  if $manage_repos { | 
|  | 31 | +    include wazuh::repo | 
|  | 32 | + | 
|  | 33 | +    if $::osfamily == 'Debian' { | 
|  | 34 | +      Class['wazuh::repo'] -> Class['apt::update'] -> Package['wazuh-dashboard'] | 
|  | 35 | +    } else { | 
|  | 36 | +      Class['wazuh::repo'] -> Package['wazuh-dashboard'] | 
|  | 37 | +    } | 
|  | 38 | +  } | 
| 25 | 39 | 
 | 
| 26 | 40 |   # assign version according to the package manager | 
| 27 |  | -  case $::osfamily { | 
| 28 |  | -    'Debian' : { | 
|  | 41 | +  case $facts['os']['family'] { | 
|  | 42 | +    'Debian': { | 
| 29 | 43 |       $dashboard_version_install = "${dashboard_version}-*" | 
| 30 | 44 |     } | 
| 31 |  | -    'Linux', 'RedHat' : { | 
| 32 |  | -      $dashboard_version_install = "${dashboard_version}" | 
|  | 45 | +    'Linux', 'RedHat', default: { | 
|  | 46 | +      $dashboard_version_install = $dashboard_version | 
| 33 | 47 |     } | 
| 34 | 48 |   } | 
| 35 | 49 | 
 | 
| 36 | 50 |   # install package | 
| 37 |  | -  package { 'Installing Wazuh Dashboard...': | 
|  | 51 | +  package { 'wazuh-dashboard': | 
| 38 | 52 |     ensure => $dashboard_version_install, | 
| 39 | 53 |     name   => $dashboard_package, | 
| 40 | 54 |   } | 
| 41 | 55 | 
 | 
| 42 |  | -  include wazuh::certificates | 
|  | 56 | +  require wazuh::certificates | 
| 43 | 57 | 
 | 
| 44 |  | -  exec { 'Copy Dashboard Certificates': | 
|  | 58 | +  exec { "ensure full path of ${dashboard_path_certs}": | 
| 45 | 59 |     path    => '/usr/bin:/bin', | 
| 46 |  | -    command => "mkdir $dashboard_path_certs \ | 
| 47 |  | -             && cp /tmp/wazuh-certificates/dashboard.pem  $dashboard_path_certs\ | 
| 48 |  | -             && cp /tmp/wazuh-certificates/dashboard-key.pem  $dashboard_path_certs\ | 
| 49 |  | -             && cp /tmp/wazuh-certificates/root-ca.pem  $dashboard_path_certs\ | 
| 50 |  | -             && chown wazuh-dashboard:wazuh-dashboard -R $dashboard_path_certs\ | 
| 51 |  | -             && chmod 500 $dashboard_path_certs\ | 
| 52 |  | -             && chmod 400 $dashboard_path_certs/*", | 
|  | 60 | +    command => "mkdir -p ${dashboard_path_certs}", | 
|  | 61 | +    creates => $dashboard_path_certs, | 
|  | 62 | +    require => Package['wazuh-dashboard'], | 
|  | 63 | +  } | 
|  | 64 | +  -> file { $dashboard_path_certs: | 
|  | 65 | +    ensure => directory, | 
|  | 66 | +    owner  => $dashboard_fileuser, | 
|  | 67 | +    group  => $dashboard_filegroup, | 
|  | 68 | +    mode   => '0500', | 
|  | 69 | +  } | 
| 53 | 70 | 
 | 
|  | 71 | +  [ | 
|  | 72 | +    'dashboard.pem', | 
|  | 73 | +    'dashboard-key.pem', | 
|  | 74 | +    'root-ca.pem', | 
|  | 75 | +  ].each |String $certfile| { | 
|  | 76 | +    file { "${dashboard_path_certs}/${certfile}": | 
|  | 77 | +      ensure  => file, | 
|  | 78 | +      owner   => $dashboard_fileuser, | 
|  | 79 | +      group   => $dashboard_filegroup, | 
|  | 80 | +      mode    => '0400', | 
|  | 81 | +      replace => false,  # only copy content when file not exist | 
|  | 82 | +      source  => "/tmp/wazuh-certificates/${certfile}", | 
|  | 83 | +    } | 
|  | 84 | +  } | 
|  | 85 | + | 
|  | 86 | +  # TODO: Fully manage the opensearch_dashboards.yml and a template file resource | 
|  | 87 | +  file_line { 'Setting host for wazuh-dashboard': | 
|  | 88 | +    path    => '/etc/wazuh-dashboard/opensearch_dashboards.yml', | 
|  | 89 | +    line    => "server.host: ${dashboard_server_host}", | 
|  | 90 | +    match   => "^server.host:\s", | 
|  | 91 | +    require => Package['wazuh-dashboard'], | 
|  | 92 | +    notify  => Service['wazuh-dashboard'], | 
|  | 93 | +  } | 
|  | 94 | +  file_line { 'Setting port for wazuh-dashboard': | 
|  | 95 | +    path    => '/etc/wazuh-dashboard/opensearch_dashboards.yml', | 
|  | 96 | +    line    => "server.port: ${dashboard_server_port}", | 
|  | 97 | +    match   => "^server.port:\s", | 
|  | 98 | +    require => Package['wazuh-dashboard'], | 
|  | 99 | +    notify  => Service['wazuh-dashboard'], | 
| 54 | 100 |   } | 
| 55 | 101 | 
 | 
| 56 | 102 |   service { 'wazuh-dashboard': | 
| 57 | 103 |     ensure     => running, | 
| 58 | 104 |     enable     => true, | 
| 59 | 105 |     hasrestart => true, | 
|  | 106 | +    name       => $dashboard_service, | 
| 60 | 107 |   } | 
| 61 |  | - | 
| 62 |  | -  exec {'Waiting for Wazuh indexer...': | 
| 63 |  | -    path      => '/usr/bin', | 
| 64 |  | -    command   => "curl -u ${dashboard_user}:${dashboard_password} -k -s -XGET https://${indexer_server_ip}:${indexer_server_port}", | 
| 65 |  | -    tries     => 100, | 
| 66 |  | -    try_sleep => 3, | 
| 67 |  | -  } | 
| 68 |  | - | 
| 69 | 108 | } | 
0 commit comments