Skip to content
This repository has been archived by the owner on Dec 27, 2022. It is now read-only.

Commit

Permalink
first pass at server recipe
Browse files Browse the repository at this point in the history
  • Loading branch information
paulczar committed Mar 15, 2014
1 parent 5ebcdad commit d5c950b
Show file tree
Hide file tree
Showing 12 changed files with 236 additions and 243 deletions.
4 changes: 3 additions & 1 deletion Vagrantfile
Expand Up @@ -7,7 +7,6 @@ log_level = :info
chef_run_list = %w[
java::default
logstash::server
logstash::agent
]
# curl::default
# minitest-handler::default
Expand Down Expand Up @@ -88,6 +87,9 @@ Vagrant.configure('2') do |config|
end

config.vm.define :precise64 do |dist_config|
if Vagrant.has_plugin?("vagrant-cachier")
dist_config.cache.scope = :box
end
dist_config.vm.box = 'opscode-ubuntu-12.04'
dist_config.vm.box_url = 'https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box'

Expand Down
7 changes: 5 additions & 2 deletions attributes/default.rb
Expand Up @@ -4,8 +4,10 @@
default['logstash']['uid'] = nil # set to nil to let system pick
default['logstash']['group'] = 'logstash'
default['logstash']['gid'] = nil # set to nil to let system pick
default['logstash']['default_version'] = '1.3.2'
default['logstash']['default_checksum'] = '6a6a6e55efd14a182560af8143883eace1936afb11d59d0c35ce4ed5a5576a18'
default['logstash']['default_version'] = '1.4.0.rc1'
default['logstash']['default_checksum'] = 'b015fa130d589af957c9a48e6f59754f5c0954835abf44bd013547a6b6520e59'
default['logstash']['default_source_url'] = 'https://download.elasticsearch.org/logstash/logstash/logstash-1.4.0.rc1.tar.gz'
default['logstash']['default_install_type'] = 'tarball'
default['logstash']['supervisor_gid'] = node['logstash']['group']
default['logstash']['pid_dir'] = '/var/run/logstash'
default['logstash']['create_account'] = true
Expand Down Expand Up @@ -40,3 +42,4 @@
default['logstash']['logging']['maxBackup'] = 10
default['logstash']['logging']['maxSize'] = '10M'
default['logstash']['logging']['useFileSize'] = false

40 changes: 21 additions & 19 deletions attributes/server.rb
@@ -1,25 +1,27 @@
# Encoding: utf-8
default['logstash']['server']['version'] = '1.3.3'
default['logstash']['server']['home'] = "#{node['logstash']['basedir']}/server"
default['logstash']['server']['log_file'] = '/var/log/logstash/server.log'
default['logstash']['server']['source_url'] = 'https://download.elasticsearch.org/logstash/logstash/logstash-1.3.3-flatjar.jar'
default['logstash']['server']['checksum'] = 'a83503bd2aa32e1554b98f812d0b411fbc5f7b6b21cebb48b7d344474f2dfc6d'
default['logstash']['server']['install_method'] = 'jar' # Either `source` or `jar`
default['logstash']['server']['patterns_dir'] = 'etc/patterns'
default['logstash']['server']['config_dir'] = 'etc/conf.d'
default['logstash']['server']['config_file'] = 'logstash.conf'
default['logstash']['server']['name'] = 'server'
default['logstash']['server']['home'] = "/opt/logstash/#{node['logstash']['server']['name']}"
default['logstash']['server']['version'] = '1.4.0.rc1'
default['logstash']['server']['source_url'] = 'https://download.elasticsearch.org/logstash/logstash/logstash-1.4.0.rc1.tar.gz'
default['logstash']['server']['checksum'] = 'b015fa130d589af957c9a48e6f59754f5c0954835abf44bd013547a6b6520e59'
default['logstash']['server']['install_method'] = 'tarball'
default['logstash']['server']['config_file'] = 'logstash.conf'
default['logstash']['server']['log_file'] = 'server.log'
default['logstash']['server']['base_config'] = 'server.conf.erb' # set blank if don't want data driven config

default['logstash']['server']['xms'] = '1024M'
default['logstash']['server']['xmx'] = '1024M'
default['logstash']['server']['java_opts'] = ''
default['logstash']['server']['gc_opts'] = '-XX:+UseParallelOldGC'
default['logstash']['server']['ipv4_only'] = false
default['logstash']['server']['debug'] = false
default['logstash']['server']['workers'] = 1
default['logstash']['server']['patterns'] = []

default['logstash']['server']['base_config_cookbook'] = 'logstash'
default['logstash']['server']['config_templates'] = []
default['logstash']['server']['config_templates_cookbook'] = 'logstash'
default['logstash']['server']['config_templates_variables'] = {}
default['logstash']['server']['base_config'] = 'server.conf.erb' # set blank if don't want data driven config
default['logstash']['server']['base_config_cookbook'] = 'logstash'
default['logstash']['server']['xms'] = '1024M'
default['logstash']['server']['xmx'] = '1024M'
default['logstash']['server']['java_opts'] = ''
default['logstash']['server']['gc_opts'] = '-XX:+UseParallelOldGC'
default['logstash']['server']['ipv4_only'] = false
default['logstash']['server']['debug'] = false
default['logstash']['server']['workers'] = 1

# allow control over the upstart config
default['logstash']['server']['upstart_with_sudo'] = false
Expand All @@ -36,4 +38,4 @@
default['logstash']['server']['web']['address'] = '0.0.0.0'
default['logstash']['server']['web']['port'] = '9292'

default['logstash']['server']['logrotate']['options'] = %w{ missingok notifempty compress copytruncate }
default['logstash']['server']['logrotate']['options'] = %w{ missingok notifempty compress copytruncate }
2 changes: 1 addition & 1 deletion metadata.rb
Expand Up @@ -11,7 +11,7 @@
supports os
end

%w{ build-essential runit git ant java logrotate rabbitmq yum python }.each do |ckbk|
%w{ build-essential runit git ant java logrotate rabbitmq yum python ark }.each do |ckbk|
depends ckbk
end

Expand Down
142 changes: 99 additions & 43 deletions providers/instance.rb
Expand Up @@ -11,28 +11,37 @@
include Chef::Mixin::ShellOut

def load_current_resource
@base_directory = new_resource.base_directory
@install_type = new_resource.install_type
@base_directory = new_resource.base_directory || node['logstash']['basedir']
@install_type = new_resource.install_type || node['logstash']['default_install_type']
@version = new_resource.version || node['logstash']['default_version']
@checksum = new_resource.checksum || node['logstash']['default_checksum']
@source_url = new_resource.source_url || "https://download.elasticsearch.org/logstash/logstash/logstash-#{@version}-flatjar.jar"
@source_url = new_resource.source_url || node['logstash']['default_source_url']
@repo = new_resource.repo
@sha = new_resource.sha
@java_home = new_resource.java_home
@ls_user = new_resource.user
@ls_group = new_resource.group
@ls_useropts = new_resource.user_opts.clone
@user = new_resource.user
@group = new_resource.group
@useropts = new_resource.user_opts.clone
@instance_dir = "#{@base_directory}/#{new_resource.name}".clone
@updated = false
@name = new_resource.name
end

action :create do

ls_homedir = @ls_useropts[:homedir]
ls_uid = @ls_useropts[:uid]
ls_gid = @ls_useropts[:gid]
ls_homedir = @useropts[:homedir]
ls_uid = @useropts[:uid]
ls_gid = @useropts[:gid]
ls_source_url = @source_url
ls_version = @version
ls_checksum = @checksum
ls_basedir = @base_directory
ls_user = @user
ls_group = @group
ls_dir = @dir
ls_name = @name

ur = user @ls_user do
ur = user ls_user do
home ls_homedir
system true
action :create
Expand All @@ -41,45 +50,65 @@ def load_current_resource
end
set_updated(ur.updated_by_last_action?)

gr = group @ls_group do
gr = group ls_group do
gid ls_gid
members @ls_user
members ls_user
append true
system true
end
set_updated(gr.updated_by_last_action?)

bdr = directory @base_directory do
action :create
mode '0755'
owner @ls_user
group @ls_group
end
set_updated(bdr.updated_by_last_action?)
case @install_type
when 'tarball'
@run_context.include_recipe "ark::default"
arkit = ark ls_name do
url ls_source_url
checksum ls_checksum
owner ls_user
group ls_group
mode 0755
version ls_version
path "#{ls_basedir}"
action :put
end
set_updated(arkit.updated_by_last_action?)

idr = directory @instance_dir do
action :create
mode '0755'
owner @ls_user
group @ls_group
end
set_updated(idr.updated_by_last_action?)
%w{bin etc lib log tmp etc/conf.d patterns}.each do |ldir|
r = directory "#{@instance_dir}/#{ldir}" do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(r.updated_by_last_action?)
end

%w{bin etc lib log tmp etc/conf.d etc/patterns}.each do |ldir|
r = directory "#{@instance_dir}/#{ldir}" do
when "jar"
bdr = directory @base_directory do
action :create
mode '0755'
owner @ls_user
group @ls_group
owner ls_user
group ls_group
end
set_updated(r.updated_by_last_action?)
end
set_updated(bdr.updated_by_last_action?)

idr = directory @instance_dir do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(idr.updated_by_last_action?)

if @install_type == "jar"
ls_source_url = @source_url
ls_version = @version
ls_checksum = @checksum
ls_instance_dir = @instance_dir
%w{bin etc lib log tmp etc/conf.d patterns}.each do |ldir|
r = directory "#{@instance_dir}/#{ldir}" do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(r.updated_by_last_action?)
end

rfr = remote_file "#{ls_instance_dir}/lib/logstash-#{ls_version}.jar" do
owner 'root'
Expand All @@ -95,11 +124,38 @@ def load_current_resource
only_if { new_resource.auto_symlink }
end
set_updated(lr.updated_by_last_action?)
elsif @install_type == "source"

when "source"
bdr = directory @base_directory do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(bdr.updated_by_last_action?)

idr = directory @instance_dir do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(idr.updated_by_last_action?)

%w{bin etc lib log tmp etc/conf.d patterns}.each do |ldir|
r = directory "#{@instance_dir}/#{ldir}" do
action :create
mode '0755'
owner ls_user
group ls_group
end
set_updated(r.updated_by_last_action?)
end

sd = directory "#{@instance_dir}/source" do
action :create
owner @ls_user
group @ls_group
owner ls_user
group ls_group
mode '0755'
end
set_updated(sd.updated_by_last_action?)
Expand All @@ -108,16 +164,16 @@ def load_current_resource
repository @repo
reference @sha
action :sync
user @ls_user
group @ls_group
user ls_user
group ls_group
end
set_updated(gr.updated_by_last_action?)

source_version = @sha || "v#{@version}"
er = execute "build-logstash" do
cwd "#{@instance_dir}/source"
environment(:JAVA_HOME => @java_home)
user @ls_user # Changed from root cause building as root...WHA?
user ls_user # Changed from root cause building as root...WHA?
command "make clean && make VERSION=#{source_version} jar"
action :run
creates "#{@instance_dir}/source/build/logstash-#{source_version}--monolithic.jar"
Expand Down
43 changes: 0 additions & 43 deletions recipes/default.rb
Expand Up @@ -3,46 +3,3 @@
# Cookbook Name:: logstash
# Recipe:: default
#
include_recipe 'runit' unless node['platform_version'] >= '12.04'

if node['logstash']['create_account']

group node['logstash']['group'] do
system true
gid node['logstash']['gid']
end

user node['logstash']['user'] do
group node['logstash']['group']
home node['logstash']['homedir']
system true
action :create
manage_home true
uid node['logstash']['uid']
end

else
directory node['logstash']['homedir'] do
recursive true
action :create
group node['logstash']['group']
owner node['logstash']['user']
mode '0755'
end
end

directory node['logstash']['basedir'] do
action :create
owner 'root'
group 'root'
mode '0755'
end

node['logstash']['join_groups'].each do |grp|
group grp do
members node['logstash']['user']
action :modify
append true
only_if "grep -q '^#{grp}:' /etc/group"
end
end

0 comments on commit d5c950b

Please sign in to comment.