diff --git a/data_bags/credentials/sentry.json b/data_bags/credentials/sentry.json new file mode 100644 index 0000000..a30df57 --- /dev/null +++ b/data_bags/credentials/sentry.json @@ -0,0 +1,10 @@ +{ + "id": "sentry", + "launchpad_rpc_shared_secret": { + "encrypted_data": "Y8BFYM4YZjz/nv4zHEAkyheAVB18HdNi1KzvqJrRXXnnYI5bC8fVO9g=\n", + "iv": "1txuL+Uy+HIIs6CF\n", + "auth_tag": "aVHnUaVRo/xXeZRh0Z1pbw==\n", + "version": 3, + "cipher": "aes-256-gcm" + } +} \ No newline at end of file diff --git a/nodes/sentry-1.json b/nodes/sentry-1.json index 52e353d..1bac2e8 100644 --- a/nodes/sentry-1.json +++ b/nodes/sentry-1.json @@ -10,7 +10,7 @@ "automatic": { "fqdn": "sentry-1", "os": "linux", - "os_version": "5.4.0-1087-kvm", + "os_version": "6.8.0-134-generic", "hostname": "sentry-1", "ipaddress": "192.168.122.251", "roles": [ @@ -21,14 +21,14 @@ "recipes": [ "kosmos-base", "kosmos-base::default", + "kosmos_prometheus::node_exporter", "kosmos_kvm::guest", "kosmos_sentry", "kosmos_sentry::default", "apt::default", "timezone_iii::default", "timezone_iii::debian", - "ntp::default", - "ntp::apparmor", + "kosmos-base::journald_conf", "kosmos-base::systemd_emails", "apt::unattended-upgrades", "kosmos-base::firewall", @@ -38,21 +38,20 @@ "postfix::_attributes", "postfix::sasl_auth", "hostname::default", - "firewall::default", - "chef-sugar::default" + "firewall::default" ], "platform": "ubuntu", - "platform_version": "20.04", + "platform_version": "24.04", "cloud": null, "chef_packages": { "chef": { - "version": "17.10.3", - "chef_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/chef-17.10.3/lib", + "version": "18.7.10", + "chef_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.7.10/lib", "chef_effortless": null }, "ohai": { - "version": "17.9.0", - "ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.0.0/gems/ohai-17.9.0/lib/ohai" + "version": "18.2.5", + "ohai_root": "/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/ohai-18.2.5/lib/ohai" } } }, diff --git a/site-cookbooks/kosmos_sentry/attributes/default.rb b/site-cookbooks/kosmos_sentry/attributes/default.rb index e1e8090..c4d5bba 100644 --- a/site-cookbooks/kosmos_sentry/attributes/default.rb +++ b/site-cookbooks/kosmos_sentry/attributes/default.rb @@ -1,9 +1,8 @@ node.default["sentry"]["repo"] = "https://github.com/getsentry/self-hosted" -node.default["sentry"]["revision"] = "23.3.1" +# Make sure to first upgrade to hard stop version if required: +# https://develop.sentry.dev/self-hosted/releases/ +node.default["sentry"]["revision"] = "26.6.0" + node.default["sentry"]["port"] = 80 node.default["sentry"]["retention_days"] = 90 node.default["sentry"]["allowed_ips"] = nil -# The Sentry setup requires docker-compose >= 1.28, which is newer than the -# latest stable version for Ubuntu 20.04 -node.default["sentry"]["docker-compose"]["version"] = "2.17.0" -node.default["sentry"]["docker-compose"]["checksum"] = "65edee934d988471c40ef31305731dbb4381d3cb0aeea13342119b61772f85e2" diff --git a/site-cookbooks/kosmos_sentry/recipes/default.rb b/site-cookbooks/kosmos_sentry/recipes/default.rb index 54fe721..af9b709 100644 --- a/site-cookbooks/kosmos_sentry/recipes/default.rb +++ b/site-cookbooks/kosmos_sentry/recipes/default.rb @@ -3,12 +3,14 @@ # Recipe:: default # -package "docker" +apt_repository "docker" do + uri "https://download.docker.com/linux/ubuntu" + key "https://download.docker.com/linux/ubuntu/gpg" + components ["stable"] +end -remote_file "/usr/local/bin/docker-compose" do - source "https://github.com/docker/compose/releases/download/v#{node["sentry"]["docker-compose"]["version"]}/docker-compose-linux-x86_64" - checksum node["sentry"]["docker-compose"]["checksum"] - mode '0755' +%w[docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin].each do |pkg| + package pkg end deploy_path = "/opt/sentry" @@ -16,24 +18,22 @@ deploy_path = "/opt/sentry" git deploy_path do repository node["sentry"]["repo"] revision node["sentry"]["revision"] + # TODO test and uncomment + # notifies :run, "execute[run_install_script]", :immediately end -# TODO -# Automatically run install script if sentry/sentry.conf.py does not exist yet +execute "run_install_script" do + cwd deploy_path + command "./install.sh --apply-automatic-config-updates --no-report-self-hosted-issues" + action :nothing +end + +credentials = data_bag_item("credentials", "sentry") env_config = { sentry_event_retention_days: node["sentry"]["retention_days"], sentry_bind: node["sentry"]["bind"] || node["sentry"]["port"], - # Default values from upstream - compose_project_name: "sentry-self-hosted", - sentry_image: "getsentry/sentry:nightly", - snuba_image: "getsentry/snuba:nightly", - relay_image: "getsentry/relay:nightly", - symbolicator_image: "getsentry/symbolicator:nightly", - wal2json_version: "latest", - healthcheck_interval: "30s", - healthcheck_timeout: "60s", - healthcheck_retries: "10" + launchpad_rpc_shared_secret: credentials["launchpad_rpc_shared_secret"] } template "#{deploy_path}/.env.custom" do @@ -41,7 +41,8 @@ template "#{deploy_path}/.env.custom" do mode 0600 sensitive true variables config: env_config - notifies :restart, "service[sentry]", :delayed + # TODO + # notifies :restart, "service[sentry]", :delayed end systemd_unit "sentry.service" do @@ -52,11 +53,13 @@ systemd_unit "sentry.service" do }, Service: { Type: "oneshot", - RemainAfterExit: "true", + RemainAfterExit: "yes", WorkingDirectory: deploy_path, - ExecStart: "docker-compose --env-file #{deploy_path}/.env.custom up -d --remove-orphans", - ExecStop: "docker-compose stop", - StandardOutput: "syslog" + ExecStart: "docker compose --env-file .env --env-file .env.custom up -d --wait", + ExecStop: "docker compose down --remove-orphans", + StandardOutput: "syslog", + TimeoutStartSec: 600, + TimeoutStopSec: 300 }, Install: { WantedBy: "multi-user.target" @@ -67,7 +70,7 @@ systemd_unit "sentry.service" do end service "sentry" do - action [:enable, :start] + action [:enable] end include_recipe 'firewall'