Merge pull request 'Exclude specified VMs from image backups' (#509) from feature/kvm_backup_exceptions into master

Reviewed-on: #509
This commit is contained in:
Râu Cao 2023-07-26 08:58:45 +00:00
commit 507a812f33
6 changed files with 25 additions and 8 deletions

View File

@ -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": { "kosmos-mastodon": {
"domain": "kosmos.social", "domain": "kosmos.social",
"s3_endpoint": "http://localhost:3900", "s3_endpoint": "http://localhost:3900",

View File

@ -83,10 +83,9 @@
} }
}, },
"run_list": [ "run_list": [
"recipe[kosmos-base]", "role[base]",
"role[kvm_host]",
"recipe[kosmos_encfs]", "recipe[kosmos_encfs]",
"recipe[kosmos_kvm::host]",
"recipe[kosmos_kvm::backup]",
"recipe[kosmos-ejabberd::firewall]", "recipe[kosmos-ejabberd::firewall]",
"recipe[kosmos-ipfs::firewall_swarm]", "recipe[kosmos-ipfs::firewall_swarm]",
"recipe[kosmos-bitcoin::firewall]", "recipe[kosmos-bitcoin::firewall]",

View File

@ -99,9 +99,8 @@
} }
}, },
"run_list": [ "run_list": [
"recipe[kosmos-base]", "role[base]",
"recipe[kosmos_kvm::host]", "role[kvm_host]",
"recipe[kosmos_kvm::backup]",
"role[nginx_proxy]", "role[nginx_proxy]",
"role[zerotier_controller]" "role[zerotier_controller]"
] ]

6
roles/kvm_host.rb Normal file
View File

@ -0,0 +1,6 @@
name "kvm_host"
run_list %w(
kosmos_kvm::host
kosmos_kvm::backup
)

View File

@ -8,3 +8,5 @@ node.default["kosmos_kvm"]["host"]["qemu_base_image"] = {
# A systemd.timer OnCalendar config value # A systemd.timer OnCalendar config value
node.default["kosmos_kvm"]["backup"]["schedule"] = "daily" node.default["kosmos_kvm"]["backup"]["schedule"] = "daily"
# Node/VM names excluded from backups
node.default["kosmos_kvm"]["backup"]["nodes_excluded"] = []

View File

@ -54,6 +54,8 @@ end
vm_domains = search(:node, "role:kvm_guest").map{|n| n["hostname"] } \ vm_domains = search(:node, "role:kvm_guest").map{|n| n["hostname"] } \
& `virsh list --name`.strip.chomp.split("\n") & `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 template "/root/backups/backup_all_vms.sh" do
source "backup_all_vms.sh.erb" source "backup_all_vms.sh.erb"
mode '0750' mode '0750'