109 lines
2.4 KiB
Ruby
109 lines
2.4 KiB
Ruby
#
|
|
# Cookbook:: strfry
|
|
# Recipe:: default
|
|
#
|
|
|
|
unless platform?("ubuntu")
|
|
raise "This recipe only supports Ubuntu installs at the moment"
|
|
end
|
|
|
|
if node["strfry"]["download_url"]
|
|
#
|
|
# Install by downloading an executable file
|
|
#
|
|
remote_file '/usr/local/bin/strfry' do
|
|
source node["strfry"]["download_url"]
|
|
checksum node["strfry"]["checksum"]
|
|
mode '0755'
|
|
show_progress true
|
|
notifies :restart, "service[strfry]", :delayed
|
|
end
|
|
else
|
|
#
|
|
# Install by building from source
|
|
#
|
|
%w[
|
|
git build-essential libyaml-perl libtemplate-perl libregexp-grammars-perl
|
|
libssl-dev zlib1g-dev liblmdb-dev libflatbuffers-dev libsecp256k1-dev
|
|
libzstd-dev
|
|
].each do |pkg|
|
|
package pkg
|
|
end
|
|
|
|
git "/usr/local/src/strfry" do
|
|
repository node["strfry"]["repo"]
|
|
revision node["strfry"]["revision"]
|
|
enable_submodules true
|
|
notifies :run, "execute[compile]", :immediately
|
|
end
|
|
|
|
execute "compile" do
|
|
cwd "/usr/local/src/strfry"
|
|
command "make setup-golpe && make -j$(nproc)"
|
|
action :nothing
|
|
notifies :create, "link[/usr/local/bin/strfry]", :immediately
|
|
notifies :restart, "service[strfry]", :delayed
|
|
end
|
|
|
|
link "/usr/local/bin/strfry" do
|
|
to "/usr/local/src/strfry/strfry"
|
|
action :nothing
|
|
end
|
|
end
|
|
|
|
group node["strfry"]["group"]
|
|
|
|
user node["strfry"]["user"] do
|
|
gid node["strfry"]["group"]
|
|
manage_home true
|
|
shell "/bin/bash"
|
|
end
|
|
|
|
directory node["strfry"]["config"]["db"] do
|
|
owner node["strfry"]["user"]
|
|
group node["strfry"]["group"]
|
|
mode "0755"
|
|
end
|
|
|
|
template "/etc/strfry.conf" do
|
|
source "strfry.conf.erb"
|
|
mode "0644"
|
|
owner node["strfry"]["user"]
|
|
group node["strfry"]["group"]
|
|
variables config: node["strfry"]["config"]
|
|
notifies :restart, "service[strfry]", :delayed
|
|
end
|
|
|
|
service 'strfry' do
|
|
action :nothing
|
|
end
|
|
|
|
systemd_unit "strfry.service" do
|
|
content({
|
|
Unit: {
|
|
Description: "strfry relay",
|
|
Documentation: ["https://github.com/hoytech/strfry"],
|
|
},
|
|
Service: {
|
|
Type: "simple",
|
|
User: node["strfry"]["user"],
|
|
ExecStart: "/usr/local/bin/strfry relay",
|
|
Restart: "on-failure",
|
|
RestartSec: "5",
|
|
ProtectHome: "no",
|
|
NoNewPrivileges: "yes",
|
|
ProtectSystem: "full",
|
|
LimitCORE: "1000000000"
|
|
},
|
|
Install: {
|
|
WantedBy: "multi-user.target"
|
|
}
|
|
})
|
|
triggers_reload true
|
|
action :create
|
|
end
|
|
|
|
service "strfry" do
|
|
action [:enable, :start]
|
|
end
|