diff --git a/environments/production.json b/environments/production.json index 538483e..c904a81 100644 --- a/environments/production.json +++ b/environments/production.json @@ -34,6 +34,15 @@ } } }, + "kosmos_kvm": { + "backup": { + "nodes_excluded": [ + "garage-2", "garage-3", "garage-4", + "postgres-5", + "rsk-mainnet-2", "rsk-testnet-3" + ] + } + }, "kosmos-mastodon": { "domain": "kosmos.social", "s3_endpoint": "http://localhost:3900", diff --git a/nodes/draco.kosmos.org.json b/nodes/draco.kosmos.org.json index a98bf05..0a933ae 100644 --- a/nodes/draco.kosmos.org.json +++ b/nodes/draco.kosmos.org.json @@ -83,10 +83,9 @@ } }, "run_list": [ - "recipe[kosmos-base]", + "role[base]", + "role[kvm_host]", "recipe[kosmos_encfs]", - "recipe[kosmos_kvm::host]", - "recipe[kosmos_kvm::backup]", "recipe[kosmos-ejabberd::firewall]", "recipe[kosmos-ipfs::firewall_swarm]", "recipe[kosmos-bitcoin::firewall]", @@ -94,4 +93,4 @@ "role[openresty_proxy]", "recipe[sockethub::firewall]" ] -} \ No newline at end of file +} diff --git a/nodes/fornax.kosmos.org.json b/nodes/fornax.kosmos.org.json index d8d9133..f648554 100644 --- a/nodes/fornax.kosmos.org.json +++ b/nodes/fornax.kosmos.org.json @@ -99,10 +99,9 @@ } }, "run_list": [ - "recipe[kosmos-base]", - "recipe[kosmos_kvm::host]", - "recipe[kosmos_kvm::backup]", + "role[base]", + "role[kvm_host]", "role[nginx_proxy]", "role[zerotier_controller]" ] -} \ No newline at end of file +} diff --git a/roles/kvm_host.rb b/roles/kvm_host.rb new file mode 100644 index 0000000..227607b --- /dev/null +++ b/roles/kvm_host.rb @@ -0,0 +1,6 @@ +name "kvm_host" + +run_list %w( + kosmos_kvm::host + kosmos_kvm::backup +) diff --git a/site-cookbooks/kosmos_kvm/attributes/default.rb b/site-cookbooks/kosmos_kvm/attributes/default.rb index 102a336..08bc201 100644 --- a/site-cookbooks/kosmos_kvm/attributes/default.rb +++ b/site-cookbooks/kosmos_kvm/attributes/default.rb @@ -8,3 +8,5 @@ node.default["kosmos_kvm"]["host"]["qemu_base_image"] = { # A systemd.timer OnCalendar config value node.default["kosmos_kvm"]["backup"]["schedule"] = "daily" +# Node/VM names excluded from backups +node.default["kosmos_kvm"]["backup"]["nodes_excluded"] = [] diff --git a/site-cookbooks/kosmos_kvm/recipes/backup.rb b/site-cookbooks/kosmos_kvm/recipes/backup.rb index d3bc822..e2da98a 100644 --- a/site-cookbooks/kosmos_kvm/recipes/backup.rb +++ b/site-cookbooks/kosmos_kvm/recipes/backup.rb @@ -54,6 +54,8 @@ end vm_domains = search(:node, "role:kvm_guest").map{|n| n["hostname"] } \ & `virsh list --name`.strip.chomp.split("\n") +vm_domains.reject! { |d| node["kosmos_kvm"]["backup"]["nodes_excluded"].include?(d) } + template "/root/backups/backup_all_vms.sh" do source "backup_all_vms.sh.erb" mode '0750'