chef/site-cookbooks/kosmos_kvm/recipes/backup.rb

49 lines
1.0 KiB
Ruby

#
# 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
directory "/root/backups" do
mode "0750"
end
directory "/root/backups/vm_meta" do
mode "0750"
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{|n| n["hostname"] } \
& `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