Skip to content

Commit 80bf890

Browse files
committed
Add support for run as a custom user
Default to root for backwards compatibility
1 parent d164c71 commit 80bf890

File tree

8 files changed

+65
-16
lines changed

8 files changed

+65
-16
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ Attributes
3636
|<tt>['beaver']['ssh_key_file']</tt>|String|Basename of the keyfiles to generate|<tt>logger</tt>|
3737
|<tt>['beaver']['config_path']</tt>|String|Configuration path|<tt>/etc/beaver</tt>|
3838
|<tt>['beaver']['config_file']</tt>|String|Configuration file|<tt>beaver.conf</tt>|
39+
|<tt>['beaver']['user']</tt>|String|User to run service as|<tt>root</tt>|
40+
|<tt>['beaver']['group']</tt>|String|Group to run service as|<tt>root</tt>|
3941
|<tt>['beaver']['configuration']</tt>|Hash|Key/Value [configuration pairs](https://github.com/josegonzalez/beaver#configuration-file-options)|<tt>{ 'respawn_delay' => 3, 'max_failure' => 7 }|
4042
|<tt>['beaver']['files']</tt>|Array|Array containing hashes like `{ 'path' => '/var/log/syslog', 'type' => 'syslogs', 'tags' => 'sys, syslog' }` for files to watch|<tt>[]</tt>|
4143
|<tt>['beaver']['input_type']['tcp/ampq/etc']</tt>|Hash|Key/Value [input_types](http://beaver.readthedocs.org/en/latest/search.html?q=type&check_keywords=yes&area=default)|

attributes/default.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
default['beaver'] = {
2828
'version' => '31',
29+
'user' => 'root',
30+
'group' => 'root',
2931
'log_path' => '/var/log',
3032
'log_file' => 'beaver.log',
3133
'generate_keypair' => false,
@@ -52,4 +54,13 @@
5254
'tags' => 'auth'
5355
}
5456
]
57+
else
58+
default['beaver']['files'] = [
59+
{
60+
'path' => '/var/log/*log',
61+
'type' => 'syslog',
62+
'tags' => 'syslog',
63+
'exclude' => 'beaver\.log'
64+
}
65+
]
5566
end

providers/tail.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def whyrun_supported?
1616
t = template ::File.join(node['beaver']['config_path'], 'conf.d', new_resource.name) do
1717
source 'beaver-tail.conf.erb'
1818
cookbook new_resource.cookbook
19+
user node['beaver']['user']
20+
group node['beaver']['group']
1921
mode '0644'
2022
variables(
2123
:name => new_resource.name,

recipes/default.rb

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,52 @@
2626

2727
include_recipe 'python'
2828

29+
user node['beaver']['user'] do
30+
action :create
31+
comment "Beaver System User"
32+
home node['beaver']['config_path']
33+
system true
34+
not_if { node['beaver']['user'] == 'root' }
35+
end
36+
37+
group node['beaver']['group'] do
38+
action :create
39+
not_if { node['beaver']['group'] == 'root' }
40+
end
41+
42+
group node['beaver']['group'] do
43+
action :modify
44+
members node['beaver']['user']
45+
append true
46+
not_if { node['beaver']['group'] == 'root' }
47+
end
48+
2949
python_pip 'beaver' do
3050
version node['beaver']['version']
3151
action :install
3252
end
3353

3454
directory node['beaver']['config_path'] do
35-
owner 'root'
36-
group 'root'
55+
owner node['beaver']['user']
56+
group node['beaver']['group']
3757
mode '0755'
3858
action :create
3959
recursive true
4060
end
4161

4262
directory ::File.join(node['beaver']['config_path'], 'conf.d') do
43-
owner 'root'
44-
group 'root'
63+
owner node['beaver']['user']
64+
group node['beaver']['group']
4565
mode '0755'
4666
action :create
4767
end
4868

69+
file "#{node['beaver']['log_path']}/#{node['beaver']['log_file']}" do
70+
action :create
71+
owner node['beaver']['user']
72+
group node['beaver']['group']
73+
end
74+
4975
include_recipe 'beaver::generate_keypair' if node['beaver']['generate_keypair']
5076

5177
log_files = node['beaver']['files'].map do |each|
@@ -59,8 +85,8 @@
5985

6086
template "#{node['beaver']['config_path']}/#{node['beaver']['config_file']}" do
6187
source 'beaver.conf.erb'
62-
owner 'root'
63-
group 'root'
88+
owner node['beaver']['user']
89+
group node['beaver']['group']
6490
mode '0644'
6591
variables(
6692
:beaver => node['beaver']['configuration'],
@@ -73,28 +99,31 @@
7399
if node['platform'] == 'ubuntu' && node['platform_version'].to_f >= 12.04
74100
template '/etc/init/beaver.conf' do
75101
source 'beaver-upstart.erb'
76-
owner 'root'
77-
group 'root'
102+
owner node['beaver']['user']
103+
group node['beaver']['group']
78104
mode '0644'
79105
variables(
80106
:config_path => node['beaver']['config_path'],
81107
:config_file => node['beaver']['config_file'],
82108
:log_path => node['beaver']['log_path'],
83-
:log_file => node['beaver']['log_file']
109+
:log_file => node['beaver']['log_file'],
110+
:user => node['beaver']['user'],
111+
:group => node['beaver']['group']
84112
)
85113
notifies :restart, 'service[beaver]'
86114
end
87115
else
88116
template '/etc/init.d/beaver' do
89117
source 'beaver-init.erb'
90-
owner 'root'
91-
group 'root'
118+
owner node['beaver']['user']
119+
group node['beaver']['group']
92120
mode '0755'
93121
variables(
94122
:config_path => node['beaver']['config_path'],
95123
:config_file => node['beaver']['config_file'],
96124
:log_path => node['beaver']['log_path'],
97-
:log_file => node['beaver']['log_file']
125+
:log_file => node['beaver']['log_file'],
126+
:user => node['beaver']['user']
98127
)
99128
notifies :restart, 'service[beaver]'
100129
end

recipes/generate_keypair.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
creates private_key
3434
end
3535

36+
execute 'Change ownership of keys to beaver user/group' do
37+
command "chown #{node['beaver']['user']}:#{node['beaver']['group']} #{private_key} #{private_key}.pub"
38+
end
39+
3640
if File.file?(private_key)
3741
public_key = File.open("#{private_key}.pub", 'rb') { |file| file.read }
3842
node.set['beaver']['public_key'] = public_key

templates/default/beaver-init.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
BEAVER_NAME='beaver'
2323
BEAVER_CMD='beaver -c <%= File.join(@config_path, @config_file) %> -l <%= File.join(@log_path, @log_file) %>'
2424
BEAVER_PID='/var/run/beaver.pid'
25-
BEAVER_USER='root'
25+
BEAVER_USER='<%= @user %>'
2626
BEAVER_LOG='<%= File.join(@log_path, @log_file) %>'
2727

2828

templates/default/beaver-upstart.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ respawn
1313
respawn limit 5 30
1414
limit nofile 65550 65550
1515

16-
setuid root
17-
setgid root
16+
setuid <%= @user %>
17+
setgid <%= @group %>
1818

1919
script
20-
exec su root -l -c 'beaver -c <%= @config_path %>/<%= @config_file %> -l <%= @log_path %>/<%= @log_file %>'
20+
exec beaver -c <%= @config_path %>/<%= @config_file %> -l <%= @log_path %>/<%= @log_file %>
2121
end script

templates/default/beaver.conf.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
<% file["options"].each do |key, value| %>
1212
<%= "#{key}: #{value}" %>
1313
<% end %>
14+
1415
<% end %>

0 commit comments

Comments
 (0)