dep 'name', :argument do
requires 'other deps'.with('args'), 'whatever they might be'
met? {
# is this dependency already met?
}
meet {
# this code gets run if it isn't.
}
end
dep 'postgres.apt_repository' do
url "http://apt.postgresql.org/pub/repos/apt/"
distribution "wheezy-pgdg"
components "main"
after do
sudo "wget -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | apt-key add -"
sudo 'apt-get update'
end
end
dep 'postgres.managed', :version do
version.default('9.3')
requires 'common:set.locale'.with("en_US")
requires_when_unmet 'postgres.apt_repository'
met? { shell? "psql --version" }
meet {
shell("apt-get -y install -t wheezy-pgdg postgresql-#{version} libpq-dev")
}
end
# nginx/site.erb
upstream <%= app_name %>_server{
<% if app_type == 'rails' %>
server unix:/opt/<%= app_name %>/current/tmp/sockets/<%= app_name %>.sock fail_timeout=0;
<% else %>
server unix:/opt/<%= app_name %>/tmp/sockets/<%= app_name %>.sock fail_timeout=0;
<% end %>
}
server {
listen <%= port %>;
# server_name <%= app_name %>.ru www.<%= app_name %>.ru
...
}
dep 'unicorn-server available', :app_name, :port, :app_type do
requires 'configured.nginx'
app_name.ask("What is the name of application located at /opt")
port.ask("What port do you want to choose for your application")
met? {
Babushka::Renderable.new("/opt/nginx/sites-available/#{app_name}")
.from?(dependency.load_path.parent / "nginx/site.erb")
}
meet {
render_erb "nginx/site.erb", :to => "/opt/nginx/sites-available/#{app_name}", :sudo => true
}
end
babushka webgradus:'unicorn-server available'
(не ручное)
Backup::Model.new(:my_backup, 'Description for my_backup') do
archive :my_archive do |archive|
archive.add "/path/to/a/file.rb"
archive.add "/path/to/a/folder/"
end
database PostgreSQL do |db|
db.name = 'someprojectdb'
end
store_with S3 do |s3|
s3.path = "/someproject"
end
# Gzip [Compressor]
compress_with Gzip
notify_by Mail do |mail|
mail.on_success = true
mail.on_failure = true
mail.to = "receiver@email.com"
# ...
end
end
1. Описываем модель для задачи бэкапирования
$ backup perform --trigger my_backup
2. Запускаем
+
...
every 1.week, at: '0:00 am' do
command "rvm use 2.0.0 do backup perform -t kava_database"
end
every '0 0 2 * *' do
command "rvm use 2.0.0 do backup perform -t kava_archives"
end
require 'eye-http'
Eye.config do
http :enable => true, :host => "0.0.0.0", :port => 10001
end
Eye.application 'gradus-five' do
process :nginx do
pid_file '/opt/nginx/logs/nginx.pid'
start_command "service nginx start"
restart_command "service nginx restart"
stop_command "service nginx stop"
restart_grace 30.seconds
end
end
test
samples
sample1 ....................... up (21:52, 0%, 13Mb, <4107>)
sample2 ....................... up (21:52, 0%, 12Mb, <4142>)
nginx ........................... up (21:52, 3%, 26Mb, <4112>)
thin ............................ up (21:53, 2%, 54Mb, <4228>)
+
Спасибо за внимание.
Вопросы?
webgradus.ru/partner.pdf