chef/site-cookbooks/kosmos_drone/recipes/default.rb

65 lines
1.7 KiB
Ruby

#
# Cookbook:: kosmos_drone
# Recipe:: default
#
package "docker-compose"
domain = "drone.kosmos.org"
deploy_path = "/opt/drone"
upstream_port = 3002
credentials = data_bag_item("credentials", "drone")
directory deploy_path do
action :create
end
template "#{deploy_path}/docker-compose.yml" do
source "docker-compose.yml.erb"
sensitive true
mode 0640
variables upstream_port: upstream_port,
domain: domain,
gitea_server: "https://#{node["kosmos_gitea"]["nginx"]["domain"]}",
client_id: credentials['client_id'],
client_secret: credentials['client_secret'],
rpc_secret: credentials['rpc_secret'],
max_procs: 4
end
systemd_unit "drone.service" do
content({Unit: {
Description: "drone service with docker compose",
Requires: "docker.service",
After: "docker.service",
},
Service: {
Restart: "always",
WorkingDirectory: deploy_path,
ExecStart: "/usr/bin/docker-compose up",
ExecStartPre: "/usr/bin/docker-compose rm -f",
ExecStop: "/usr/bin/docker-compose down",
},
Install: {
WantedBy: "multi-user.target",
}})
action [:create, :enable, :start]
end
template "#{node['nginx']['dir']}/sites-available/#{domain}" do
source "nginx_conf.erb"
owner 'www-data'
mode 0640
variables server_name: domain,
ssl_cert: "/etc/letsencrypt/live/#{domain}/fullchain.pem",
ssl_key: "/etc/letsencrypt/live/#{domain}/privkey.pem",
upstream_port: upstream_port
notifies :reload, 'service[nginx]', :delayed
end
nginx_site domain do
action :enable
end
nginx_certbot_site domain