-
Notifications
You must be signed in to change notification settings - Fork 20
/
Capfile
executable file
·58 lines (50 loc) · 1.7 KB
/
Capfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env ruby
# frozen_string_literal: true
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
# Includes tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
# https://github.com/capistrano/rvm
# https://github.com/capistrano/rbenv
# https://github.com/capistrano/chruby
# https://github.com/capistrano/bundler
# https://github.com/capistrano/rails
#
require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'capistrano/scm/git'
install_plugin Capistrano::SCM::Git
require 'capistrano/scm/git-with-submodules'
install_plugin Capistrano::SCM::Git::WithSubmodules
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
before 'bundler:install', 'deploy:puppet'
namespace :deploy do
%w[start restart].each do |name|
desc "#{name.capitalize} application"
task name.to_sym do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
end
after :publishing, :restart
task :puppet do
on roles(:all) do |_host|
execute :sudo, '/usr/bin/env',
"FACTER_server_url='#{fetch(:server_url)}'",
"FACTER_rails_env='#{fetch(:rails_env)}'",
:sh, "-c '/opt/puppetlabs/bin/puppet apply\
--modulepath /opt/puppetlabs/puppet/modules:#{release_path.join('puppet/modules')}\
#{release_path.join("puppet/manifests/#{fetch(:manifest)}.pp")}'"
end
end
end