Puppet Class: falcon::install

Defined in:
manifests/install.pp

Summary

This class handles falcon sensor package.

Overview



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'manifests/install.pp', line 6

class falcon::install {
  if $falcon::package_manage {
    if $falcon::install_method == 'api' {
      if !($falcon::client_id and $falcon::client_secret) {
        fail("client_id and client_secret are required when install_method is 'api'")
      }

      $config = {
        'version' => $falcon::version,
        'falcon_cloud' => $falcon::falcon_cloud,
        'update_policy' => $falcon::update_policy,
        'sensor_tmp_dir' => $falcon::sensor_tmp_dir,
        'version_decrement' => $falcon::version_decrement,
      }
      $info = falcon::sensor_download_info($falcon::client_id, $falcon::client_secret, $config, $falcon::sensor_dl_proxy_host, $falcon::sensor_dl_proxy_port) # lint:ignore:140chars

      if $falcon::version_manage or ($facts['falcon'].dig('version') in ['absent', undef]) {
        sensor_download { 'Download Sensor Package':
          ensure         => 'present',
          version_manage => $falcon::version_manage,
          version        => $info['version'],
          file_path      => $info['file_path'],
          sha256         => $info['sha256'],
          bearer_token   => $info['bearer_token'],
          falcon_cloud   => $falcon::falcon_cloud,
          proxy_host     => $falcon::sensor_dl_proxy_host,
          proxy_port     => $falcon::sensor_dl_proxy_port,
          before         => Package['falcon'],
        }
      }

      if $falcon::version_manage {
        $ensure = $info['version']
      } else {
        $ensure = 'present'
      }

      if $falcon::cleanup_installer {
        file { 'Ensure Package is Removed':
          ensure  => 'absent',
          path    => $info['file_path'],
          require => Package['falcon'],
        }
      }

      $package_options = {
        'ensure' => $ensure,
        'name'   => $falcon::package_name,
        'source' => $info['file_path'],
      } + $falcon::package_options
    }

    if $falcon::install_method == 'local' {
      $package_options = { 'name' => $falcon::package_name } + $falcon::package_options
    }

    if $facts['kernel'] == 'windows' {
      unless $falcon::cid {
        fail('CID is required to install the Falcon Sensor on Windows')
      }

      $install_args = {
        'CID' => $falcon::cid.unwrap,
        'ProvToken' => $falcon::provisioning_token,
        'APP_PROXYNAME' => $falcon::proxy_host,
        'APP_PROXYPORT' => $falcon::proxy_port,
        'PROXYDISABLE' => $falcon::proxy_enabled,
      }

      $_package_options = {
        'install_options' => ['/install', '/quiet', '/norestart'] + falcon::win_install_options($install_args),
      } + $package_options
    } else {
      $_package_options = $package_options
    }

    package { 'falcon':
      * => $_package_options,
    }
  }
}