Skip to content

Commit

Permalink
Adding windows support.
Browse files Browse the repository at this point in the history
This should allow the user to be able to install the sensu client on
windows platforms.
  • Loading branch information
liamjbennett committed Nov 20, 2015
1 parent 37438f8 commit 4ff61ba
Show file tree
Hide file tree
Showing 16 changed files with 211 additions and 100 deletions.
7 changes: 6 additions & 1 deletion lib/puppet/provider/package/sensu_gem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@

has_feature :versionable, :install_options

commands :gemcmd => "/opt/sensu/embedded/bin/gem"
commands :gemcmd =>
if File.exists?("#{ENV['SYSTEMDRIVE']}\\opt\\sensu\\embedded\\bin\\gem.bat")
"#{ENV['SYSTEMDRIVE']}\\opt\\sensu\\embedded\\bin\\gem.bat"
else
"/opt/sensu/embedded/bin/gem"
end

def uninstall
command = [command(:gemcmd), "uninstall"]
Expand Down
2 changes: 1 addition & 1 deletion lib/puppet/provider/sensu_api_config/json.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def port
end

def config_file
"#{resource[:base_path]}/api.json"
File.join(resource[:base_path], 'api.json').gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
end

# Public: Set the port that the API should listen on.
Expand Down
3 changes: 1 addition & 2 deletions lib/puppet/provider/sensu_client_config/json.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def flush
end

def config_file
"#{resource[:base_path]}/client.json"
File.join(resource[:base_path], 'client.json').gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
end

def pre_create
Expand Down Expand Up @@ -110,4 +110,3 @@ def safe_mode=(value)
end

end

2 changes: 1 addition & 1 deletion lib/puppet/provider/sensu_rabbitmq_config/json.rb
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def ssl_cert_chain=(value)
end

def config_file
"#{resource[:base_path]}/rabbitmq.json"
File.join(resource[:base_path],'rabbitmq.json').gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
end

def port
Expand Down
2 changes: 1 addition & 1 deletion lib/puppet/provider/sensu_redis_config/json.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def pre_create
end

def config_file
"#{resource[:base_path]}/redis.json"
File.join(resource[:base_path], 'redis.json').gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
end

def destroy
Expand Down
21 changes: 11 additions & 10 deletions manifests/api/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,21 @@
$ensure = 'present'
}

file { '/etc/sensu/conf.d/api.json':
file { "${sensu::etc_dir}/conf.d/api.json":
ensure => $ensure,
owner => 'sensu',
group => 'sensu',
mode => '0440',
owner => $sensu::user,
group => $sensu::group,
mode => $sensu::file_mode,
}

sensu_api_config { $::fqdn:
ensure => $ensure,
bind => $sensu::api_bind,
host => $sensu::api_host,
port => $sensu::api_port,
user => $sensu::api_user,
password => $sensu::api_password,
ensure => $ensure,
base_path => "${sensu::etc_dir}/conf.d",
bind => $sensu::api_bind,
host => $sensu::api_host,
port => $sensu::api_port,
user => $sensu::api_user,
password => $sensu::api_password,
}

}
12 changes: 7 additions & 5 deletions manifests/api/service.pp
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@
}
}

service { 'sensu-api':
ensure => $ensure,
enable => $enable,
hasrestart => $hasrestart,
subscribe => [ Class['sensu::package'], Class['sensu::api::config'], Class['sensu::redis::config'] ],
if $::osfamily != 'windows' {
service { 'sensu-api':
ensure => $ensure,
enable => $enable,
hasrestart => $hasrestart,
subscribe => [ Class['sensu::package'], Class['sensu::api::config'], Class['sensu::redis::config'] ],
}
}
}
}
28 changes: 23 additions & 5 deletions manifests/check.pp
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,34 @@

$check_name = regsubst(regsubst($name, ' ', '_', 'G'), '[\(\)]', '', 'G')

file { "/etc/sensu/conf.d/checks/${check_name}.json":
case $::osfamily {
'windows': {
$etc_dir = 'C:/opt/sensu'
$conf_dir = "${etc_dir}/conf.d"
$user = undef
$group = undef
$file_mode = undef
}
default: {
$etc_dir = '/etc/sensu'
$conf_dir = "${etc_dir}/conf.d"
$user = 'sensu'
$group = 'sensu'
$file_mode = '0440'
}
}

file { "${conf_dir}/checks/${check_name}.json":
ensure => $ensure,
owner => 'sensu',
group => 'sensu',
mode => '0440',
owner => $user,
group => $group,
mode => $file_mode,
before => Sensu_check[$check_name],
}

sensu_check { $check_name:
ensure => $ensure,
base_path => "${conf_dir}/checks",
type => $type,
standalone => $standalone,
command => $command,
Expand All @@ -143,7 +161,7 @@
publish => $publish,
dependencies => $dependencies,
custom => $custom,
require => File['/etc/sensu/conf.d/checks'],
require => File["${conf_dir}/checks"],
notify => $::sensu::check_notify,
}

Expand Down
9 changes: 5 additions & 4 deletions manifests/client/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@
$ensure = 'present'
}

file { '/etc/sensu/conf.d/client.json':
file { "${sensu::conf_dir}/client.json":
ensure => $ensure,
owner => 'sensu',
group => 'sensu',
mode => '0440',
owner => $sensu::user,
group => $sensu::group,
mode => $sensu::file_mode,
}

sensu_client_config { $::fqdn:
ensure => $ensure,
base_path => $sensu::conf_dir,
client_name => $sensu::client_name,
address => $sensu::client_address,
bind => $sensu::client_bind,
Expand Down
22 changes: 22 additions & 0 deletions manifests/client/service.pp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,28 @@
}
}

if $::osfamily == 'windows' {

file { 'C:/opt/sensu/bin/sensu-client.xml':
ensure => present,
content => template("${module_name}/sensu-client.erb"),
}

$startup_type = $::os_maj_version ? {
'2003' => 'Automatic',
default => 'Delayed-Auto',
}

exec { 'install-sensu-client':
command => "powershell.exe -ExecutionPolicy RemoteSigned -Command \"New-Service -Name sensu-client -BinaryPathName c:\\opt\\sensu\\bin\\sensu-client.exe -DisplayName 'Sensu Client' -StartupType ${startup_type}\"",
unless => 'powershell.exe -ExecutionPolicy RemoteSigned -Command "Get-Service sensu-client"',
path => $::path,
before => Service['sensu-client'],
require => File['C:/opt/sensu/bin/sensu-client.xml'],
}

}

service { 'sensu-client':
ensure => $ensure,
enable => $enable,
Expand Down
20 changes: 20 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,26 @@
create_resources('::sensu::handler', $handlers)
create_resources('::sensu::check', $checks)

case $::osfamily {
'Debian','RedHat': {
$etc_dir = '/etc/sensu'
$conf_dir = "${etc_dir}/conf.d"
$user = 'sensu'
$group = 'sensu'
$dir_mode = '0555'
$file_mode = '0440'
}

'windows': {
$etc_dir = 'C:/opt/sensu'
$conf_dir = "${etc_dir}/conf.d"
$user = undef
$group = undef
$dir_mode = undef
$file_mode = undef
}
}

# Include everything and let each module determine its state. This allows
# transitioning to purged config and stopping/disabling services
anchor { 'sensu::begin': } ->
Expand Down
98 changes: 64 additions & 34 deletions manifests/package.pp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
case $::osfamily {

'Debian': {
$pkg_title = 'sensu'
$pkg_name = 'sensu'
$pkg_source = undef

class { '::sensu::repo::apt': }
if $sensu::install_repo {
include ::apt
Expand All @@ -22,17 +26,41 @@
}

'RedHat': {
$pkg_title = 'sensu'
$pkg_name = 'sensu'
$pkg_source = undef

class { '::sensu::repo::yum': }

$pkg_require = undef
}

'windows': {
$repo_require = undef

$pkg_version = inline_template("<%= scope.lookupvar('sensu::version').sub(/(.*)\\./, '\\1-') %>")
$pkg_title = 'sensu'
$pkg_name = 'Sensu'
$pkg_source = "C:\\Windows\\Temp\\sensu-${pkg_version}.msi"
$pkg_require = "Archive[${pkg_source}]"

archive { $pkg_source:
ensure => present,
provider => faraday,
source => "http://repos.sensuapp.org/msi/sensu-${pkg_version}.msi",
creates => $pkg_source,
cleanup => false,
}
}

default: { fail("${::osfamily} not supported yet") }

}

package { 'sensu':
package { $pkg_title:
ensure => $sensu::version,
name => $pkg_name,
source => $pkg_source,
require => $pkg_require,
}

Expand All @@ -58,71 +86,73 @@
}
}

file { '/etc/default/sensu':
ensure => file,
content => template("${module_name}/sensu.erb"),
owner => '0',
group => '0',
mode => '0444',
require => Package['sensu'],
if $::osfamily != 'windows' {
file { '/etc/default/sensu':
ensure => file,
content => template("${module_name}/sensu.erb"),
owner => '0',
group => '0',
mode => '0444',
require => Package['sensu'],
}
}

file { [ '/etc/sensu/conf.d', '/etc/sensu/conf.d/handlers', '/etc/sensu/conf.d/checks', '/etc/sensu/conf.d/filters', '/etc/sensu/conf.d/extensions' ]:
file { [ $sensu::conf_dir, "${sensu::conf_dir}/handlers", "${sensu::conf_dir}/checks", "${sensu::conf_dir}/filters", "${sensu::conf_dir}/extensions" ]:
ensure => directory,
owner => 'sensu',
group => 'sensu',
mode => '0555',
owner => $sensu::user,
group => $sensu::group,
mode => $sensu::dir_mode,
purge => $sensu::_purge_config,
recurse => true,
force => true,
require => Package['sensu'],
require => Package[$pkg_name],
}

if $sensu::manage_handlers_dir {
file { '/etc/sensu/handlers':
file { "${sensu::etc_dir}/handlers":
ensure => directory,
mode => '0555',
owner => 'sensu',
group => 'sensu',
mode => $sensu::dir_mode,
owner => $sensu::user,
group => $sensu::group,
purge => $sensu::_purge_handlers,
recurse => true,
force => true,
require => Package['sensu'],
require => Package[$pkg_name],
}
}

file { ['/etc/sensu/extensions', '/etc/sensu/extensions/handlers']:
file { ["${sensu::etc_dir}/extensions", "${sensu::etc_dir}/extensions/handlers"]:
ensure => directory,
mode => '0555',
owner => 'sensu',
group => 'sensu',
mode => $sensu::dir_mode,
owner => $sensu::user,
group => $sensu::group,
purge => $sensu::_purge_extensions,
recurse => true,
force => true,
require => Package['sensu'],
require => Package[$pkg_name],
}

file { '/etc/sensu/mutators':
file { "${sensu::etc_dir}/mutators":
ensure => directory,
mode => '0555',
owner => 'sensu',
group => 'sensu',
mode => $sensu::dir_mode,
owner => $sensu::user,
group => $sensu::group,
purge => $sensu::_purge_mutators,
recurse => true,
force => true,
require => Package['sensu'],
require => Package[$pkg_name],
}

if $sensu::_manage_plugins_dir {
file { '/etc/sensu/plugins':
file { "${sensu::etc_dir}/plugins":
ensure => directory,
mode => '0555',
owner => 'sensu',
group => 'sensu',
mode => $sensu::dir_mode,
owner => $sensu::user,
group => $sensu::group,
purge => $sensu::_purge_plugins,
recurse => true,
force => true,
require => Package['sensu'],
require => Package[$pkg_name],
}
}

Expand All @@ -141,5 +171,5 @@
}
}

file { '/etc/sensu/config.json': ensure => absent }
file { "${sensu::etc_dir}/config.json": ensure => absent }
}
Loading

0 comments on commit 4ff61ba

Please sign in to comment.