deployinator 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,7 +32,7 @@ namespace :deploy do
32
32
  end
33
33
 
34
34
  desc 'Ensure all deployinator specific settings are set, and warn and raise if not.'
35
- task :settings do
35
+ before 'deploy:check', :settings do
36
36
  {
37
37
  (File.dirname(__FILE__) + "/examples/config/deploy.rb") => 'config/deploy.rb',
38
38
  (File.dirname(__FILE__) + "/examples/config/deploy/staging.rb") => "config/deploy/#{fetch(:stage)}.rb"
@@ -22,10 +22,12 @@ namespace :deploy do
22
22
  task :precompile => ['deployinator:deployment_user'] do
23
23
  on roles(fetch(:assets_roles)) do
24
24
  execute(
25
- "docker", "run", "--rm", "--tty", "--user", fetch(:deployment_user_id),
25
+ "docker", "run", "--rm", "--tty", "--user", fetch(:webserver_username),
26
26
  "-w", release_path,
27
27
  "--link", "#{fetch(:postgres_container_name)}:postgres",
28
28
  "--entrypoint", "/bin/bash",
29
+ "--volume", "/etc/passwd:/etc/passwd:ro",
30
+ "--volume", "/etc/group:/etc/group:ro",
29
31
  "--volume", "#{fetch(:deploy_to)}:#{fetch(:deploy_to)}:rw",
30
32
  fetch(:ruby_image_name), "-c",
31
33
  "\"umask", "0007", "&&", "#{shared_path.join('bundle', 'bin', 'rake')}",
@@ -7,6 +7,7 @@ set :preexisting_ssh_user, ENV['USER']
7
7
  set :deployment_username, "deployer" # user with SSH access and passwordless sudo rights
8
8
  set :webserver_username, "www-data" # less trusted web server user with limited write permissions
9
9
 
10
+ set :webserver_owned_dirs, [shared_path.join('tmp', 'cache'), shared_path.join('public', 'assets')]
10
11
  set :webserver_writeable_dirs, [shared_path.join('run'), shared_path.join("tmp"), shared_path.join("log")]
11
12
  set :webserver_executable_dirs, [shared_path.join("bundle", "bin")]
12
13
  set :ignore_permissions_dirs, [shared_path.join("postgres"), shared_path.join("nginx")]
@@ -58,8 +58,20 @@ namespace :deployinator do
58
58
  ["-not", "-path", "\"#{dir}\"", "-not", "-path", "\"#{dir}/*\""]
59
59
  end
60
60
 
61
+ chown_ignore_options = fetch(:webserver_owned_dirs).collect do |dir|
62
+ ["-not", "-path", "\"#{dir}\"", "-not", "-path", "\"#{dir}/*\""]
63
+ end
64
+
65
+ # chown webserver owned
66
+ fetch(:webserver_owned_dirs).each do |dir|
67
+ if directory_exists?(dir)
68
+ execute "find", dir, ignore_options,
69
+ "-exec", "chown", "#{fetch(:webserver_user_id)}:#{fetch(:webserver_user_id)}", "{}", "+"
70
+ end
71
+ end
72
+
61
73
  # chown
62
- execute "find", fetch(:deploy_to), ignore_options,
74
+ execute "find", fetch(:deploy_to), ignore_options, chown_ignore_options,
63
75
  "-exec", "chown", "#{fetch(:deployment_user_id)}:#{fetch(:webserver_user_id)}", "{}", "+"
64
76
 
65
77
  # chmod executable
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deployinator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-31 00:00:00.000000000 Z
12
+ date: 2015-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano