#
# 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
