1
2
3
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 | attributes/default.rb
default[:redis][:dir] = "/etc/redis"
default[:redis][:data_dir] = "/var/lib/redis"
default[:redis][:log_dir] = "/var/log/redis"
default[:redis][:loglevel] = "notice"
default[:redis][:user] = "redis"
default[:redis][:port] = 6379
default[:redis][:bind] = "127.0.0.1"
templates/default/redis.conf.erb
port <%= node[:redis][:port] %>
bind <%= node[:redis][:bind] %>
loglevel <%= node[:redis][:loglevel] %>
dir <%= node[:redis][:data_dir] %>
daemonize no
logfile stdout
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
templates/default/redis.upstart.conf.erb
#!upstart
description "Redis Server"
env USER=<%= node[:redis][:user] %>
start on startup
stop on shutdown
respawn
exec sudo -u $USER sh -c "/usr/local/bin/redis-server \
/etc/redis/redis.conf 2>&1 >> \
<%= node[:redis][:log_dir] %>/redis.log"
recipies/default.rb
#
# Cookbook Name:: redis
# Recipe:: default
#
# Copyright 2016, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
package "build-essential" do
action :install
end
user node[:redis][:user] do
action :create
system true
shell "/bin/false"
end
directory node[:redis][:dir] do
owner "root"
mode "0755"
action :create
end
directory node[:redis][:data_dir] do
owner "redis"
mode "0755"
action :create
end
directory node[:redis][:log_dir] do
mode 0755
owner node[:redis][:user]
action :create
end
remote_file "/tmp/redis.tar.gz" do
source "http://download.redis.io/releases/redis-3.2.4.tar.gz"
action :create_if_missing
end
bash "compile_redis_source" do
user 'root'
cwd '/tmp'
code <<-EOH
tar zxf redis.tar.gz
cd redis-3.2.4
make && make install
EOH
end
service "redis" do
provider Chef::Provider::Service::Upstart
subscribes :restart, resources(:bash => "compile_redis_source")
supports :restart => true, :start => true, :stop => true
end
template "redis.conf" do
path "#{node[:redis][:dir]}/redis.conf"
source "redis.conf.erb"
owner "root"
group "root"
mode "0644"
notifies :restart, resources(:service => "redis")
end
template "redis.upstart.conf" do
path "/etc/init/redis.conf"
source "redis.upstart.conf.erb"
owner "root"
group "root"
mode "0644"
notifies :restart, resources(:service => "redis")
end
service "redis" do
action [:enable, :start]
end
|