Skip to content
This repository has been archived by the owner on Aug 9, 2021. It is now read-only.

Commit

Permalink
Darwin compatiblity
Browse files Browse the repository at this point in the history
  • Loading branch information
tbartelmess committed Sep 6, 2013
1 parent b23d238 commit cd6c474
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 48 deletions.
2 changes: 1 addition & 1 deletion manifests/configdir.pp
Expand Up @@ -43,7 +43,7 @@
purge => true,
recurse => true,
require => Exec["create_config_dir_${name}"],
notify => Service["logstash-${name}"];
notify => Service["${logstash::params::service_base_name}${name}"];
}

#### Create the sincedb directory
Expand Down
57 changes: 38 additions & 19 deletions manifests/java.pp
Expand Up @@ -22,29 +22,48 @@
# * Richard Pijnenburg <mailto:richard@ispavailability.com>
#
class logstash::java {
case $::osfamily {
'Linux': {
if $logstash::java_package == undef {
# Default Java package
case $::operatingsystem {
'CentOS', 'Fedora', 'Scientific', 'RedHat', 'Amazon': {
$package = 'java-1.6.0-openjdk'
}
'Debian', 'Ubuntu': {
$package = 'openjdk-6-jre-headless'
}
default: {
fail("\"${module_name}\" provides no java package
for \"${::operatingsystem}\"")
}
}
} else {
$package = $logstash::java_package
}

if $logstash::java_package == undef {
# Default Java package
case $::operatingsystem {
'CentOS', 'Fedora', 'Scientific', 'RedHat', 'Amazon': {
$package = 'java-1.6.0-openjdk'
## Install the java package unless already specified somewhere else
if !defined(Package[$package]) {
package { $package:
ensure => present
}
}
'Debian', 'Ubuntu': {
$package = 'openjdk-6-jre-headless'
}
'Darwin': {
if $logstash::java_package != undef {
fail("Darwin not support installing java from a package")
}
default: {
fail("\"${module_name}\" provides no java package
for \"${::operatingsystem}\"")
exec { 'download-apple-java':
command => "curl -L -o /tmp/java.dmg http://support.apple.com/downloads/DL1572/en_US/JavaForOSX2013-004.dmg 2> /dev/null",
path => ['/usr/bin', '/bin'],
creates => "/tmp/java.dmg"
}
package {'apple-java':
provider => 'pkgdmg',
ensure => present,
source => '/tmp/java.dmg',
require => Exec['download-apple-java']
}
}
} else {
$package = $logstash::java_package
}

## Install the java package unless already specified somewhere else
if !defined(Package[$package]) {
package { $package:
ensure => present
}
}
}
27 changes: 19 additions & 8 deletions manifests/package.pp
Expand Up @@ -25,8 +25,8 @@
class logstash::package {

File {
owner => 'root',
group => 'root',
owner => $logstash::params::logstash_user,
group => $logstash::params::logstash_group,
mode => '0644'
}

Expand Down Expand Up @@ -126,12 +126,23 @@

}
ftp, https, http: {

exec { 'download-logstash':
command => "wget -O ${jardir}/${basefilename} ${logstash::jarfile} 2> /dev/null",
path => ['/usr/bin', '/bin'],
creates => "${jardir}/${basefilename}",
require => Exec['create_install_dir'],
case $logstash::params::download_tool {
'wget': {
exec { 'download-logstash':
command => "wget -O ${jardir}/${basefilename} ${logstash::jarfile} 2> /dev/null",
path => ['/usr/bin', '/bin'],
creates => "${jardir}/${basefilename}",
require => Exec['create_install_dir'],
}
}
'curl': {
exec { 'download-logstash':
command => "curl -o ${jardir}/${basefilename} ${logstash::jarfile} 2> /dev/null",
path => ['/usr/bin', '/bin'],
creates => "${jardir}/${basefilename}",
require => Exec['create_install_dir'],
}
}
}

Exec['download-logstash'] -> File["${logstash::installpath}/logstash.jar"]
Expand Down
27 changes: 25 additions & 2 deletions manifests/params.pp
Expand Up @@ -52,7 +52,14 @@

# File user/group
$logstash_user = 'root'
$logstash_group = 'root'
case $::osfamily {
'Linux': {
$logstash_group = 'root'
}
'Darwin': {
$logstash_group = 'wheel'
}
}

#### Internal module values

Expand All @@ -77,24 +84,29 @@
}
}



# service parameters
case $::operatingsystem {
'RedHat', 'CentOS', 'Fedora', 'Scientific', 'Amazon': {
$service_name = 'logstash'
$service_base_name = "${service_name}-"
$service_hasrestart = true
$service_hasstatus = true
$service_pattern = $service_name
$defaults_location = '/etc/sysconfig'
}
'Debian', 'Ubuntu': {
$service_name = 'logstash'
$service_base_name = "${service_name}-"
$service_hasrestart = true
$service_hasstatus = true
$service_pattern = $service_name
$defaults_location = '/etc/default'
}
'Darwin': {
$service_name = 'org.logstash.agent'
$service_name = 'org.logstash'
$service_base_name = "${service_name}."
$service_hasrestart = true
$service_hasstatus = true
$service_pattern = $service_name
Expand All @@ -106,4 +118,15 @@
}
}

# Download tool

case $::osfamily {
'Linux': {
$download_tool = 'wget'
}
'Darwin': {
$download_tool = 'curl'
}
}

}
72 changes: 54 additions & 18 deletions manifests/servicefile.pp
Expand Up @@ -31,6 +31,25 @@
fail("${name} is not a valid instances value.")
}

case $::osfamily {
'Linux': {
$init_script_path = "/etc/init.d/logstash-${name}"
$init_name = "logstash-${name}"
$init_owner = 'root'
$init_group = 'root'
$init_mode = '0755'
}
'Darwin': {
$init_script_path = "/Library/LaunchDaemons/org.logstash.${name}.plist"
$init_name = "org.logstash.${name}"
$init_owner = 'root'
$init_group = 'admin'
$init_mode = '0744'
}
}



if $logstash::ensure == 'present' {

# If we are managing the init script
Expand Down Expand Up @@ -66,6 +85,9 @@
'Debian', 'Ubuntu': {
$initscript = template("${module_name}/etc/init.d/logstash.init.Debian.erb")
}
'Darwin': {
$initscript = template("${module_name}/Library/LaunchDaemons/org.logstash.plist.erb")
}
default: {
fail("\"${module_name}\" provides no default init file
for \"${::operatingsystem}\"")
Expand All @@ -77,45 +99,59 @@
# If no custom defaults file is provided, lets use our default one
if $def_file {
$defaults_file = $def_file
if $::operatingsystem == 'Darwin' {
fail('A custom settings file is not supported on OSX')
}
} else {
$defaults_file = "puppet:///modules/${module_name}/etc/sysconfig/logstash.defaults"
}

# Write service file
file { "/etc/init.d/logstash-${name}":
file { $init_script_path:
ensure => $logstash::ensure,
content => $initscript,
source => $initfile,
owner => 'root',
group => 'root',
mode => '0755',
before => Service[ "logstash-${name}" ]
owner => $init_owner,
group => $init_group,
mode => $init_mode,
before => Service[ $init_name ]
}

if $::operatingsystem == 'Darwin' {
exec { "/bin/launchctl load -w ${init_script_path}":
subscribe => File[$init_script_path],
refreshonly => true
}
}

if $defaults_file {
# Write defaults file if we have one
file { "${logstash::params::defaults_location}/logstash-${name}":
ensure => $logstash::ensure,
source => $defaults_file,
owner => 'root',
group => 'root',
mode => '0644',
before => Service[ "logstash-${name}" ],
notify => Service[ "logstash-${name}" ],
case $::osfamily {
'Linux': {
if $defaults_file {
# Write defaults file if we have one
file { "${logstash::params::defaults_location}/logstash-${name}":
ensure => $logstash::ensure,
source => $defaults_file,
owner => 'root',
group => 'root',
mode => '0644',
before => Service[ $init_name ],
notify => Service[ $init_name ],
}
}
}
}
}
}

if $logstash::status != 'unmanaged' {

service { "logstash-${name}":
service { $init_name:
ensure => $service_ensure,
enable => $service_enable,
name => "logstash-${name}",
name => $init_name,
hasstatus => $logstash::params::service_hasstatus,
hasrestart => $logstash::params::service_hasrestart,
pattern => "logstash-${name}"
pattern => $init_name
}

}
Expand Down
29 changes: 29 additions & 0 deletions templates/Library/LaunchDaemons/org.logstash.plist.erb
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>Label</key>
<string>org.logstash.<%=@name%></string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string><%= scope.lookupvar('logstash::installpath') %>/logstash.jar</string>
<string>agent</string>
<string>-f</string>
<string><%= @configdir %></string>
<string>--log</string>
<string>/Library/Logs/logstash-<%=@name%></string>
</array>
<key>StandardErrorPath</key>
<string>/Library/Logs/logstash-<%=@name%>-stderr.log</string>
<key>UserName</key>
<string><%= scope.lookupvar('logstash::logstash_user') %></string>
<key>GroupName</key>
<string><%= scope.lookupvar('logstash::logstash_group') %></string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

0 comments on commit cd6c474

Please sign in to comment.