WIP Add KVM host backup recipe
Add a recipe that configures scripts for live backups of VM images via libvirt and borg.
This commit is contained in:
40
site-cookbooks/kosmos_kvm/recipes/backup.rb
Normal file
40
site-cookbooks/kosmos_kvm/recipes/backup.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
#
|
||||
# Cookbook:: kosmos_kvm
|
||||
# Recipe:: backup
|
||||
#
|
||||
|
||||
apt_package "borgbackup"
|
||||
|
||||
borg_credentials = data_bag_item("credentials", "borg")
|
||||
|
||||
file "/root/.ssh/borg_rsa" do
|
||||
content borg_credentials["ssh_key"]
|
||||
mode '0600'
|
||||
end
|
||||
|
||||
bash "Add borg environment variables for bash" do
|
||||
code <<-EOF
|
||||
cat >>/root/.bashrc <<EOL
|
||||
|
||||
# GENERATED BY CHEF
|
||||
export BORG_RSH='ssh -i /root/.ssh/borg_rsa'
|
||||
export BORG_PASSPHRASE=#{borg_credentials["passphrase"]}
|
||||
export BORG_REPO='#{borg_credentials["repository"]}'
|
||||
EOF
|
||||
not_if "grep -q BORG /root/.bashrc"
|
||||
end
|
||||
|
||||
cookbook_file "/root/backups/backup_vm.sh" do
|
||||
source "backup_vm.sh"
|
||||
mode "0750"
|
||||
end
|
||||
|
||||
# Search all guests and filter by presence on current host
|
||||
vm_domains = search(:node, "role:kvm_guest").map(&:name) \
|
||||
& `virsh list --name`.strip.chomp.split("\n")
|
||||
|
||||
template "/root/backups/backup_all_vms.sh" do
|
||||
source "backup_all_vms.sh.erb"
|
||||
mode '0750'
|
||||
variables vm_domains: vm_domains
|
||||
end
|
||||
Reference in New Issue
Block a user