X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/0d094aef4d35b0d3a28f7d8e39c050b12188aa24..18db4c72edea0d2cd4df5b7d7d9011df618d0ff9:/cookbooks/oxidized/recipes/default.rb diff --git a/cookbooks/oxidized/recipes/default.rb b/cookbooks/oxidized/recipes/default.rb index 0ea5ec1f6..66c919908 100644 --- a/cookbooks/oxidized/recipes/default.rb +++ b/cookbooks/oxidized/recipes/default.rb @@ -29,6 +29,7 @@ package %w[ libssh2-1-dev zlib1g-dev pkg-config + libyaml-dev ] keys = data_bag_item("oxidized", "keys") @@ -63,38 +64,63 @@ directory "/var/log/oxidized" do mode "755" end -git "/opt/oxidized" do +directory "/opt/oxidized" do + owner "oxidized" + group "oxidized" + mode "755" +end + +git "/opt/oxidized/daemon" do action :sync repository "https://github.com/openstreetmap/oxidized.git" depth 1 user "oxidized" group "oxidized" - notifies :run, "bundle_install[/opt/oxidized]" + notifies :run, "bundle_install[/opt/oxidized/daemon]", :immediately +end + +directory "/opt/oxidized/.ssh" do + owner "oxidized" + group "oxidized" + mode "700" end # Key is set as a deployment key in github repo -file "/opt/oxidized/.ssh/id_rsa" do +file "/opt/oxidized/.ssh/id_ed25519" do content keys["git"].join("\n") owner "oxidized" group "oxidized" mode "400" - notifies :delete, "file[/opt/oxidized/.ssh/id_rsa.pub]", :immediately + notifies :delete, "file[/opt/oxidized/.ssh/id_ed25519.pub]", :immediately notifies :restart, "service[oxidized]" end # Ensure public key is deleted if private key is changed. Trigged by notify -file "/opt/oxidized/.ssh/id_rsa.pub" do +file "/opt/oxidized/.ssh/id_ed25519.pub" do action :nothing end -execute "/opt/oxidized/.ssh/id_rsa.pub" do - command "ssh-keygen -f /opt/oxidized/.ssh/id_rsa -y > /opt/oxidized/.ssh/id_rsa.pub" +execute "/opt/oxidized/.ssh/id_ed25519.pub" do + command "ssh-keygen -f /opt/oxidized/.ssh/id_ed25519 -y > /opt/oxidized/.ssh/id_ed25519.pub" user "oxidized" group "oxidized" - creates "/opt/oxidized/.ssh/id_rsa.pub" + creates "/opt/oxidized/.ssh/id_ed25519.pub" notifies :restart, "service[oxidized]" end +ssh_known_hosts_entry "github.com" do + action [:create, :flush] + file_location "/opt/oxidized/.ssh/known_hosts" + owner "oxidized" + group "oxidized" +end + +directory "/var/lib/oxidized" do + owner "oxidized" + group "oxidized" + mode "750" +end + git "/var/lib/oxidized/configs.git" do action :sync repository "git@github.com:openstreetmap/oxidized-configs.git" # Uses oxidized ssh key @@ -103,7 +129,7 @@ git "/var/lib/oxidized/configs.git" do group "oxidized" end -bundle_install "/opt/oxidized" do +bundle_install "/opt/oxidized/daemon" do action :nothing options "--deployment" user "oxidized" @@ -116,16 +142,14 @@ systemd_service "oxidized" do description "oxidized network device backup daemon" after "network.target" user "oxidized" - working_directory "/opt/oxidized" + working_directory "/opt/oxidized/daemon" + runtime_directory "oxidized" exec_start "#{node[:ruby][:bundle]} exec oxidized" environment "OXIDIZED_HOME" => "/etc/oxidized", "OXIDIZED_LOGS" => "/var/log/oxidized" nice 10 - private_tmp true - private_devices true - protect_system "full" - protect_home true - no_new_privileges true + sandbox :enable_network => true + read_write_paths ["/run/oxidized", "/var/lib/oxidized", "/var/log/oxidized"] restart "on-failure" notifies :restart, "service[oxidized]" end