mana 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 131c277ffa492ef0846fd6910eb048a2aa58cfbd
4
+ data.tar.gz: 8eeb92f6c22a350935d750f48e4ff54531057fee
5
+ SHA512:
6
+ metadata.gz: fc9239f7b25930b52472adc78dd91889b691bcfa6955045fcc3aff3d5600b71241aae7cf6d5ef88cae92637dcccb8782b4274ac1c7adb5b1317ea4a9f508333b
7
+ data.tar.gz: 252083d5a0a841414e92810882a9a77cfcff57549da1289d4060443a9a00c89168e616c7ab835b38a4595cbf56da56bb249adf37d339d7ecfc703fce2e6f36bd
@@ -1,11 +1 @@
1
- # Defaults for monit initscript
2
- # sourced by /etc/init.d/monit
3
- # installed at /etc/default/monit by chef
4
-
5
- # You must set this variable to for monit to start
6
- startup=1
7
-
8
- # To change the intervals which monit should run,
9
- # edit the configuration file /etc/monit/monitrc
10
- # It can no longer be configured here.
11
-
1
+ START=yes
@@ -0,0 +1,24 @@
1
+ package 's3cmd'
2
+
3
+ s3cfg_filepath = "#{node.deploy_to}/.s3cmd"
4
+
5
+ file s3cfg_filepath do
6
+ content <<CONTENT
7
+ [default]
8
+ access_key = #{node.aws.access_key_id}
9
+ secret_key = #{node.aws.secret_access_key}
10
+ CONTENT
11
+ end
12
+
13
+ bucket = "#{node.application}-backup"
14
+
15
+ execute "s3cmd -c #{s3cfg_filepath} mb s3://#{bucket}"
16
+
17
+ cron "#{node.application}-backup" do
18
+ server_id = node[:ec2] ? node.ec2.instance_id : node.hostname
19
+
20
+ minute 0
21
+ command "F=`mktemp` && pg_dump -c -U postgres #{node.railsapp.db_name} | gzip > $F && s3cmd -c #{s3cfg_filepath} put $F s3://#{bucket}/#{server_id}-#{node.railsapp.db_name}/`date -u +\\%Y-\\%m-\\%d/\\%H-\\%M-\\%S`.sql.gz && rm $F"
22
+
23
+ user node[:runner] || node.user
24
+ end
@@ -25,7 +25,7 @@ Capistrano::Configuration.instance(:must_exist).load do
25
25
 
26
26
  # Roundsman fine-tuning
27
27
 
28
- set :chef_version, '~> 10.18.2'
28
+ set :chef_version, '~> 11.4.0'
29
29
  set :cookbooks_directory, 'config/deploy/cookbooks'
30
30
  set :stream_roundsman_output, false # todo check why is this needed
31
31
  set :ruby_install_script do
@@ -97,6 +97,9 @@ Capistrano::Configuration.instance(:must_exist).load do
97
97
  desc 'Install & update software'
98
98
  task :install do
99
99
  roundsman.chef.default
100
+
101
+ # fix https://github.com/iain/roundsman/issues/26
102
+ variables.keys.each { |k| reset! k }
100
103
  end
101
104
 
102
105
  desc 'Show install log'
@@ -121,10 +124,31 @@ Capistrano::Configuration.instance(:must_exist).load do
121
124
  sudo "DEBIAN_FRONTEND=noninteractive #{fetch(:package_manager)} -yq upgrade"
122
125
  end
123
126
 
127
+ set :ssh_login_options, '-L 3737:localhost:3737' # forward monit status server port
128
+
124
129
  desc "Open SSH connection to server"
125
130
  task :ssh do
126
131
  host = roles[:app].servers.first # silly approach
127
- exec "ssh -L 3737:localhost:3737 #{fetch(:user)}@#{host}" # forward monit status server port
132
+ exec "ssh #{ssh_login_options} #{fetch(:user)}@#{host}"
133
+ end
134
+
135
+ def sudo_runner
136
+ (exists? :runner) ? (sudo as: runner) : ''
137
+ end
138
+
139
+ desc 'Run rails console'
140
+ task :console do
141
+ host = roles[:app].servers.first # silly approach
142
+ cmd = "cd #{current_path} && #{sudo_runner} bundle exec rails console #{rails_env}"
143
+ exec "ssh -t #{ssh_login_options} #{fetch(:user)}@#{host} #{cmd.shellescape}"
144
+ end
145
+
146
+ desc 'Run rake task. Example: cap mana:rake about'
147
+ task :rake do
148
+ host = roles[:app].servers.first # silly approach
149
+ args = ARGV.drop_while { |a| a != 'mana:rake' }[1..-1].join ' '
150
+ cmd = "cd #{current_path} && #{sudo_runner} RAILS_ENV=#{rails_env} bundle exec rake #{args}"
151
+ exec "ssh #{fetch(:user)}@#{host} #{cmd.shellescape}"
128
152
  end
129
153
 
130
154
  desc "Watch Rails log"
@@ -138,6 +162,7 @@ Capistrano::Configuration.instance(:must_exist).load do
138
162
  exit
139
163
  end
140
164
  end
165
+
141
166
  end
142
167
 
143
168
  # More convinience
@@ -0,0 +1,11 @@
1
+ require 'right_aws'
2
+
3
+ module Capistrano
4
+ class Configuration
5
+ def server_ec2 instance_id, *roles
6
+ ec2 = RightAws::Ec2.new aws[:access_key_id], aws[:secret_access_key]
7
+ addr = ec2.describe_instances(instance_id).first[:ip_address]
8
+ server addr, *roles
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Mana
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -27,6 +27,10 @@ set :monit,
27
27
  set :railsapp,
28
28
  server_names: '_' #TODO: change this to domain name(s) of the project
29
29
 
30
+ set :aws,
31
+ access_key_id: '',
32
+ secret_access_key: '' #TODO: set this to let railsapp::backup put backups in s3
33
+
30
34
  # For other options look into cookbooks/*/attributes/default.rb
31
35
  # and other cookbook sources.
32
36
 
@@ -36,6 +40,7 @@ set :run_list, %w(
36
40
  recipe[postgresql]
37
41
  recipe[nginx]
38
42
  recipe[railsapp]
43
+ recipe[railsapp::backup]
39
44
  )
40
45
 
41
46
  after 'deploy:restart', 'deploy:restart_unicorn'
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ilia Ablamonov, Cloud Castle Inc.
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-12 00:00:00.000000000 Z
11
+ date: 2013-04-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: capistrano
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: roundsman
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description: Configuration management with Chef & Capistrano
@@ -78,6 +73,7 @@ files:
78
73
  - cookbooks/postgresql/templates/default/postgresql.conf.erb
79
74
  - cookbooks/postgresql/templates/default/postgresql.monit.conf.erb
80
75
  - cookbooks/railsapp/attributes/default.rb
76
+ - cookbooks/railsapp/recipes/backup.rb
81
77
  - cookbooks/railsapp/recipes/default.rb
82
78
  - cookbooks/railsapp/templates/default/master.monit.conf.erb
83
79
  - cookbooks/railsapp/templates/default/site.conf.erb
@@ -88,6 +84,7 @@ files:
88
84
  - lib/mana/capistrano.rb
89
85
  - lib/mana/railtie.rb
90
86
  - lib/mana/remote_cache_subdir.rb
87
+ - lib/mana/server_ec2.rb
91
88
  - lib/mana/version.rb
92
89
  - lib/tasks/mana.rake
93
90
  - mana.gemspec
@@ -97,26 +94,25 @@ files:
97
94
  - templates/config/deploy/vagrant.rb
98
95
  homepage: https://github.com/cloudcastle/mana
99
96
  licenses: []
97
+ metadata: {}
100
98
  post_install_message:
101
99
  rdoc_options: []
102
100
  require_paths:
103
101
  - lib
104
102
  required_ruby_version: !ruby/object:Gem::Requirement
105
- none: false
106
103
  requirements:
107
- - - ! '>='
104
+ - - '>='
108
105
  - !ruby/object:Gem::Version
109
106
  version: '0'
110
107
  required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
108
  requirements:
113
- - - ! '>='
109
+ - - '>='
114
110
  - !ruby/object:Gem::Version
115
111
  version: '0'
116
112
  requirements: []
117
113
  rubyforge_project:
118
- rubygems_version: 1.8.23
114
+ rubygems_version: 2.0.3
119
115
  signing_key:
120
- specification_version: 3
116
+ specification_version: 4
121
117
  summary: Configuration management with Chef & Capistrano
122
118
  test_files: []