Puppet Class: choria::config

Defined in:
manifests/config.pp

Overview

Configures the Choria Server



4
5
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'manifests/config.pp', line 4

class choria::config {
  assert_private()

  $defaults = {
    "collectives" => "mcollective"
  }

  if $choria::statusfile {
    $status = {
      "plugin.choria.status_file_path"       => $choria::statusfile,
      "plugin.choria.status_update_interval" => $choria::status_write_interval
    }
  } else {
    $status = {}
  }

  $config = $defaults + $choria::server_config + $status + {
    "logfile"                    => $choria::server_logfile,
    "loglevel"                   => $choria::server_log_level,
    "identity"                   => $choria::identity,
    "plugin.choria.srv_domain"   => $choria::srvdomain,
  }

  $_config_dir = dirname($choria::server_config_file)

  file{[$_config_dir, "${_config_dir}/policies", "${_config_dir}/policies/rego", "${_config_dir}/plugin.d"]:
    ensure => "directory",
    owner  => $choria::config_user,
    group  => $choria::config_group,
    mode   => "0755",
  }

  concat{"${_config_dir}/policies/groups":
    ensure => "present",
    owner  => $choria::config_user,
    group  => $choria::config_group,
    mode   => "0644",
  }

  $choria::scout_gossfile.each |$target, $gossfile| {
    file{$target:
      content => $gossfile.stdlib::to_yaml,
      owner   => $choria::config_user,
      group   => $choria::config_group,
      mode    => "0755",
    }
  }

  if "plugin.scout.overrides" in $choria::server_config {
    file{$choria::server_config["plugin.scout.overrides"]:
      content => $choria::scout_overrides.stdlib::to_json,
      owner   => $choria::config_user,
      group   => $choria::config_group,
      mode    => "0755",
    }
  }

  if "plugin.choria.machine.store" in $choria::server_config {
    if $choria::purge_machines {
      $purge_options = {
        source  => "puppet:///modules/choria/empty",
        ignore  => ".keep",
        purge   => true,
        recurse => true,
        force   => true
      }
    } else {
      $purge_options = {}
    }

    file{
      default:
        * =>  $purge_options;

      $choria::server_config["plugin.choria.machine.store"]:
        ensure => directory,
        owner  => $choria::config_user,
        group  => $choria::config_group,
        mode   => "0755",
    }
  }

  if "plugin.choria.agent_provider.mcorpc.agent_shim" in $choria::server_config and "plugin.choria.agent_provider.mcorpc.config" in $choria::server_config {
    if $choria::server_config["plugin.choria.agent_provider.mcorpc.agent_shim"] =~ /\.bat$/ {
      $agent_shim = $choria::server_config["plugin.choria.agent_provider.mcorpc.agent_shim"].regsubst(/\.bat$/, '.rb')
      $agent_shim_wrapper = $choria::server_config["plugin.choria.agent_provider.mcorpc.agent_shim"]
    } else {
      $agent_shim = $choria::server_config["plugin.choria.agent_provider.mcorpc.agent_shim"]
      $agent_shim_wrapper = undef
    }

    file{$agent_shim:
      owner   => $choria::config_user,
      group   => $choria::config_group,
      mode    => "0755",
      content => epp("choria/choria_mcollective_agent_compat.rb.epp")
    }

    if $agent_shim_wrapper {
      file{$agent_shim_wrapper:
        owner   => $choria::config_user,
        group   => $choria::config_group,
        mode    => "0755",
        content => epp("choria/choria_mcollective_agent_compat.bat.epp")
      }
    }
  }

  if $choria::manage_server_config {
    file{$choria::server_config_file:
      owner   => $choria::config_user,
      group   => $choria::config_group,
      mode    => "0640",
      content => choria::hash2config($config),
      require => Class["choria::install"]
    }

    if $choria::server {
      File[$choria::server_config_file] ~> Class["choria::service"]
    }
  }

  if $choria::server_provisioning_token {
    file{$choria::server_provisioning_token_file:
      owner   => $choria::config_user,
      group   => $choria::config_group,
      mode    => "0640",
      content => $choria::server_provisioning_token,
      require => Class["choria::install"],
    }

    if $choria::manage_server_config and $choria::server {
      File[$choria::server_provisioning_token_file] ~> Class["choria::service"]
    }
  }
}