111 lines
3.1 KiB
Ruby
111 lines
3.1 KiB
Ruby
include_recipe 'deno'
|
|
|
|
user node['blossom']['user'] do
|
|
home "/home/#{node['blossom']['user']}"
|
|
manage_home true
|
|
system true
|
|
end
|
|
|
|
group node['blossom']['group'] do
|
|
members [node['blossom']['user']]
|
|
system true
|
|
end
|
|
|
|
directory node['blossom']['install_dir'] do
|
|
owner node['blossom']['user']
|
|
group node['blossom']['group']
|
|
mode '0755'
|
|
end
|
|
|
|
git node['blossom']['install_dir'] do
|
|
repository node['blossom']['repo_url']
|
|
revision node['blossom']['revision']
|
|
action :sync
|
|
user node['blossom']['user']
|
|
group node['blossom']['group']
|
|
notifies :run, 'execute[blossom_build]', :immediately
|
|
notifies :restart, 'service[blossom]', :delayed
|
|
end
|
|
|
|
execute 'blossom_build' do
|
|
command '/usr/local/bin/deno task build'
|
|
cwd node['blossom']['install_dir']
|
|
user node['blossom']['user']
|
|
group node['blossom']['group']
|
|
environment(
|
|
'DENO_DIR' => "/home/#{node['blossom']['user']}/.cache/deno"
|
|
)
|
|
action :nothing
|
|
end
|
|
|
|
directory "/home/#{node['blossom']['user']}/data" do
|
|
owner node['blossom']['user']
|
|
group node['blossom']['group']
|
|
mode '0750'
|
|
recursive true
|
|
end
|
|
|
|
template "#{node['blossom']['install_dir']}/config.yml" do
|
|
source 'config.yml.erb'
|
|
owner node['blossom']['user']
|
|
group node['blossom']['group']
|
|
mode '0640'
|
|
variables(
|
|
port: node['blossom']['port'],
|
|
host: node['blossom']['host'],
|
|
domain: node['blossom']['domain'],
|
|
user: node['blossom']['user'],
|
|
storage_backend: node['blossom']['storage']['backend'],
|
|
storage_local_dir: node['blossom']['storage']['local']['dir'],
|
|
storage_s3: node['blossom']['storage']['s3'],
|
|
allowed_pubkeys: node['blossom']['allowed_pubkeys'],
|
|
max_size: node['blossom']['max_size'],
|
|
list_enabled: node['blossom']['list']['enabled'],
|
|
list_require_auth: node['blossom']['list']['require_auth'],
|
|
list_allow_others: node['blossom']['list']['allow_list_others'],
|
|
delete_require_auth: node['blossom']['delete']['require_auth'],
|
|
landing_enabled: node['blossom']['landing']['enabled'],
|
|
landing_title: node['blossom']['landing']['title'],
|
|
dashboard_enabled: node['blossom']['dashboard']['enabled'],
|
|
dashboard_username: node['blossom']['dashboard']['username'],
|
|
dashboard_password: node['blossom']['dashboard']['password']
|
|
)
|
|
notifies :restart, 'service[blossom]', :delayed
|
|
end
|
|
|
|
file "#{node['blossom']['install_dir']}/.env" do
|
|
owner node['blossom']['user']
|
|
group node['blossom']['group']
|
|
mode '0640'
|
|
action :create
|
|
notifies :restart, 'service[blossom]', :delayed
|
|
end
|
|
|
|
systemd_unit 'blossom.service' do
|
|
content({
|
|
Unit: {
|
|
Description: 'Blossom Server',
|
|
After: 'network.target'
|
|
},
|
|
Service: {
|
|
Type: 'simple',
|
|
User: node['blossom']['user'],
|
|
Group: node['blossom']['group'],
|
|
WorkingDirectory: node['blossom']['install_dir'],
|
|
ExecStart: '/usr/local/bin/deno task start config.yml',
|
|
Restart: 'on-failure',
|
|
Environment: [
|
|
"DENO_DIR=/home/#{node['blossom']['user']}/.cache/deno"
|
|
]
|
|
},
|
|
Install: {
|
|
WantedBy: 'multi-user.target'
|
|
}
|
|
})
|
|
action [:create]
|
|
end
|
|
|
|
service "blossom" do
|
|
action [:enable, :start]
|
|
end
|