Files
blossom-cookbook/recipes/default.rb

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