Add automatic daily backup of mediawiki and wordpress databases

This commit is contained in:
Greg Karékinian
2016-05-13 17:12:24 +02:00
parent 5d11298c1d
commit 7a53617302
11 changed files with 311 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
# encoding: utf-8
#
# Default
#
# $ backup perform -t default -c <%= node["backup"]["dir"] %>
#
KosmosBackup.new(:default, 'default backup') do
<%- if node["backup"]["mysql"] -%>
<%- node["backup"]["mysql"]["databases"].each do |db_name| -%>
database MySQL, :"<%= db_name.to_sym %>" do |db|
db.name = "<%= db_name %>"
end
<%- end -%>
<%- end -%>
<%- if node["mongodb"] -%>
<%- node["backup"]["mongodb"]["databases"].each do |db_name| -%>
database MongoDB, :"<%= db_name.to_sym %>" do |db|
db.name = "<%= db_name %>"
end
<%- end -%>
<%- end -%>
<%- node["backup"]["redis"]["databases"].each do |db_name| -%>
database Redis, :"<%= db_name.to_sym %>" do |db|
db.rdb_path = "/var/lib/redis/<%= db_name %>.rdb"
end
<%- end -%>
<% if node["backup"]["archives"].length > 0 %>
<% node["backup"]["archives"].each do |key, items| %>
archive :<%= key %> do |archive|
<% items.each do |item| %>
Dir['<%= item %>'].each do |dir|
archive.add(dir)
end
<% end %>
archive.tar_options '-h --ignore-failed-read'
end
<% end %>
<% end %>
store_with S3 do |s3|
s3.path = "/<%= node["hostname"] %>"
s3.keep = <%= node['backup']['s3']['keep'] %>
end
compress_with Bzip2
encrypt_with OpenSSL
notify_by Mail do |mail|
mail.on_success = false
end
end

View File

@@ -0,0 +1,66 @@
# encoding: utf-8
##
# Backup v4.x Configuration
#
# Documentation: http://backup.github.io/backup
# Issue Tracker: https://github.com/backup/backup/issues
Storage::S3.defaults do |s3|
s3.access_key_id = "<%= @s3_access_key_id %>"
s3.secret_access_key = "<%= @s3_secret_access_key %>"
s3.region = "<%= @s3_region %>"
s3.bucket = "<%= node['backup']['s3']['bucket'] %>"
end
Encryptor::OpenSSL.defaults do |encryption|
encryption.password = "<%= @encryption_password %>"
encryption.base64 = true
encryption.salt = true
end
Notifier::Mail.defaults do |mail|
mail.from = "<%= node.name %> <<%= @mail_from %>>"
mail.to = "<%= @mail_to %>"
mail.delivery_method = :sendmail
end
<%- if node["backup"]["mongodb"] -%>
Database::MongoDB.defaults do |db|
db.host = "<%= node["backup"]["mongodb"]["host"] %>"
db.ipv6 = <%= node["backup"]["mongodb"]["ipv6"] %>
db.lock = <%= node["backup"]["mongodb"]["lock"] %>
<% if node["mongodb"]["port"] -%>
db.port = <%= node["mongodb"]["port"] %>
<% end -%>
end
<%- end -%>
<%- if node["backup"]["mysql"] -%>
Database::MySQL.defaults do |db|
db.host = "<%= node["backup"]["mysql"]["host"] %>"
db.username = "<%= node["backup"]["mysql"]["username"] %>"
db.password = "<%= node["backup"]["mysql"]["password"] %>"
db.additional_options = ['--quick', '--single-transaction']
end
<%- end -%>
Database::Redis.defaults do |db|
db.host = "<%= node["backup"]["redis"]["host"] %>"
db.port = 6379
db.invoke_save = <%= node["backup"]["redis"]["invoke_save"] %>
<%# db.password = "my_password"%>
<%# db.socket = "/tmp/redis.sock"%>
end
preconfigure 'KosmosBackup' do
split_into_chunks_of 250 # megabytes
store_with S3
compress_with Bzip2
encrypt_with OpenSSL
notify_by Mail do |mail|
mail.on_success = false
mail.on_warning = false
mail.on_failure = true
end
end