capistrano-simple_systemd 0.1.1 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cda40e1475446c76a2540b874302e2d10390000568f0a1f74674dfbe27115d6d
4
- data.tar.gz: 2eeaee0344715bc9bbfbe385ce7f09208d071675afb9692d4ead02bd1b4e7a97
3
+ metadata.gz: f52f1550b5740291f3a698e04bc3be99c2bfdd900809ab1f8f10ec493da7f42c
4
+ data.tar.gz: 2f7a9d9ccbeb2e5c6156da99c9dd52ca7810064c3443368aee27e5413a0392d3
5
5
  SHA512:
6
- metadata.gz: e12110fc85a12e817f1a84acc501f11ad0cbac0a36563baae8cfafc8a175120237ddb15979e65c0c47903795a9db8cbb6ddcab30d5b2b30ea6f990b6f7a293e7
7
- data.tar.gz: 97272c579d7f5055a80de64cbc55cb6b12d37e5b6a3b90306c7b389f9235b0445367ed5f43a3d2cf97bf9af5990ba3635c2b06b125b191700268a62f3fd6cbc1
6
+ metadata.gz: 8f19749c8e99eb8742c9df11c196edde497d569436c6bd4b95536b1c637487cb14c550fb23b3e37eee661f1a23eb5429b5ff11aab8e3eb30ac9ba92886856080
7
+ data.tar.gz: d3e59b089c5bb23dd8e8491315c6d470f9bef6501150c17655f3f0b5120d765984dd63712ff0935404c794d80ab57272acc923e6e2ba781bc89fc43f78e8d86e
data/CHANGELOG.md CHANGED
@@ -1,4 +1,15 @@
1
1
  # Changelog
2
+ ### v0.2.0, 2019-11-16 (Feature release)
3
+ - Added the following specific tasks
4
+ - cap {stage} systemd:{service}:upload to upload a single service file
5
+ - cap {stage} systemd:{service}:remove to upload a single service file
6
+ - Added the following global tasks
7
+ - cap {stage} systemd:enable to enable all services
8
+ - cap {stage} systemd:disable to disable all services
9
+ - cap {stage} systemd:remove to remove all services
10
+ - Moved both global and specific tasks into one file
11
+ - Pruned dependencies
12
+
2
13
  ### v0.1.1, 2019-10-26 (Maintenance release)
3
14
  - Moved gem to new repository (https://github.com/gkosae/capistrano-simple_systemd.git)
4
15
  - Added sample service file template to README
data/Gemfile.lock CHANGED
@@ -1,23 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-simple_systemd (0.1.1)
4
+ capistrano-simple_systemd (0.2.0)
5
5
  capistrano (~> 3.7)
6
- sshkit (~> 1.2)
7
- sshkit-sudo (~> 0.1)
8
6
 
9
7
  GEM
10
8
  remote: https://rubygems.org/
11
9
  specs:
12
- airbrussh (1.3.4)
10
+ airbrussh (1.4.0)
13
11
  sshkit (>= 1.6.1, != 1.7.0)
14
- capistrano (3.11.1)
12
+ byebug (11.0.1)
13
+ capistrano (3.11.2)
15
14
  airbrussh (>= 1.0.0)
16
15
  i18n
17
16
  rake (>= 10.0.0)
18
17
  sshkit (>= 1.9.0)
19
18
  concurrent-ruby (1.1.5)
20
- i18n (1.6.0)
19
+ i18n (1.7.0)
21
20
  concurrent-ruby (~> 1.0)
22
21
  net-scp (2.0.0)
23
22
  net-ssh (>= 2.6.5, < 6.0.0)
@@ -26,14 +25,13 @@ GEM
26
25
  sshkit (1.20.0)
27
26
  net-scp (>= 1.1.2)
28
27
  net-ssh (>= 2.8.0)
29
- sshkit-sudo (0.1.0)
30
- sshkit (~> 1.8)
31
28
 
32
29
  PLATFORMS
33
30
  ruby
34
31
 
35
32
  DEPENDENCIES
36
33
  bundler (~> 2.0)
34
+ byebug
37
35
  capistrano-simple_systemd!
38
36
  rake (~> 10.0)
39
37
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # capistrano-simple_systemd
1
+ # capistrano-simple_systemd [![Gem Version](https://badge.fury.io/rb/capistrano-simple_systemd.svg)](https://badge.fury.io/rb/capistrano-simple_systemd)
2
2
 
3
3
  Capistrano tasks to control mutiple services with systemd
4
4
 
@@ -52,8 +52,11 @@ PLEASE NOTE: Currently only files with the `.service.erb` extension are conside
52
52
 
53
53
  The following tasks are provided out of the box
54
54
  ```ruby
55
- cap systemd:reload-daemons
56
- cap systemd:upload
55
+ cap systemd:reload-daemons # run sudo systemctl daemon-reload
56
+ cap systemd:upload # upload all provided service files
57
+ cap systemd:remove # remove all provided service files
58
+ cap systemd:enable # enable all provided service files
59
+ cap systemd:disable # disable all provided service files
57
60
  ```
58
61
 
59
62
  The following tasks will be created for each service template detected in the `config/systemd` directory
@@ -66,6 +69,8 @@ cap systemd:{service}:reload-or-restart
66
69
  cap systemd:{service}:restart
67
70
  cap systemd:{service}:start
68
71
  cap systemd:{service}:stop
72
+ cap systemd:{service}:upload
73
+ cap systemd:{service}:remove
69
74
  ```
70
75
  Where `service` is the base name of the service template. <br>
71
76
  For example, placing `puma.service.erb` in the template directory will yield the following tasks
@@ -77,6 +82,8 @@ cap systemd:puma:reload-or-restart
77
82
  cap systemd:puma:restart
78
83
  cap systemd:puma:start
79
84
  cap systemd:puma:stop
85
+ cap systemd:puma:upload
86
+ cap systemd:puma:remove
80
87
  ```
81
88
 
82
89
  Run
@@ -99,15 +106,13 @@ Services are enabled after upload by invoking `systemd:{service}:enable`. This b
99
106
  set :enable_services_after_upload, false
100
107
  ```
101
108
 
102
- ## Development
103
-
104
- After checking out the repo, run `bundle`
105
-
106
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
107
-
108
109
  ## Contributing
109
-
110
- Bug reports and pull requests are welcome on GitHub at https://github.com/gkosae/capistrano-simple_systemd.git.
110
+ All contributions are welcome. Improvements are especially welcome. To contribute
111
+ 1. Fork it
112
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
113
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
114
+ 4. Push to the branch (`git push origin my-new-feature`)
115
+ 5. Create new Pull Request
111
116
 
112
117
  ## License
113
118
 
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
17
17
 
18
18
  spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["changelog_uri"] = "https://github.com/gkosae/capistrano-simple_systemd/blob/master/CHANGELOG.md"
19
20
  spec.metadata["source_code_uri"] = "https://github.com/gkosae/capistrano-simple_systemd.git"
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
@@ -28,9 +29,8 @@ Gem::Specification.new do |spec|
28
29
  spec.require_paths = ["lib"]
29
30
 
30
31
  spec.add_runtime_dependency "capistrano", "~> 3.7"
31
- spec.add_runtime_dependency "sshkit", "~> 1.2"
32
- spec.add_runtime_dependency "sshkit-sudo", "~> 0.1"
33
32
 
34
33
  spec.add_development_dependency "bundler", "~> 2.0"
35
34
  spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "byebug"
36
36
  end
@@ -1,4 +1,3 @@
1
1
  require 'capistrano/simple_systemd/paths'
2
2
  require 'capistrano/simple_systemd/helpers'
3
- load File.expand_path('../tasks/simple_systemd/global_tasks.rake', __FILE__)
4
- load File.expand_path('../tasks/simple_systemd/specific_tasks.rake', __FILE__)
3
+ load File.expand_path('../tasks/simple_systemd.rake', __FILE__)
@@ -2,23 +2,31 @@ module Capistrano
2
2
  module SimpleSystemd
3
3
  module Helpers
4
4
  def each_service_template(&block)
5
- service_file_local_dir = Capistrano::SimpleSystemd::Paths.service_file_local_dir
5
+ service_file_local_dir = Capistrano::SimpleSystemd::Paths::SERVICE_FILE_LOCAL_DIR
6
6
 
7
7
  Dir
8
8
  .glob(File.join(service_file_local_dir, '*.service.erb'))
9
- .each do |template_file|
10
- block.call(template_file)
11
- end
9
+ .each { |template_file| block.call(template_file) }
12
10
  end
13
-
14
- def compile(template_file_path)
15
- ERB.new(File.new(template_file_path).read).result(binding)
11
+
12
+ def invoke_on_all(task)
13
+ each_service_template do |template|
14
+ basename = File.basename(template, '.service.erb')
15
+ invoke! "systemd:#{basename}:#{task}"
16
+ end
16
17
  end
17
-
18
- def upload_service_file(file_content, file_name, destination_dir)
19
- tmp_path = "#{fetch(:tmp_dir)}/#{file_name}"
18
+
19
+
20
+ def upload_template(template, service_file_name)
21
+ file_content = compile(File.absolute_path(template))
22
+ tmp_path = "#{fetch(:tmp_dir)}/#{service_file_name}"
23
+
20
24
  upload! StringIO.new(file_content), tmp_path
21
- sudo :mv, tmp_path, "#{destination_dir}/#{file_name}"
25
+ sudo :mv, tmp_path, "#{fetch(:service_file_remote_dir)}/#{service_file_name}"
26
+ end
27
+
28
+ def compile(template_path)
29
+ ERB.new(File.new(template_path).read).result(binding)
22
30
  end
23
31
  end
24
32
  end
@@ -1,13 +1,7 @@
1
1
  module Capistrano
2
2
  module SimpleSystemd
3
3
  module Paths
4
- def self.service_file_local_dir
5
- 'config/systemd'
6
- end
7
-
8
- def self.service_file_remote_dir
9
- '/etc/systemd/system'
10
- end
4
+ SERVICE_FILE_LOCAL_DIR = 'config/systemd'
11
5
  end
12
6
  end
13
7
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module SimpleSystemd
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,97 @@
1
+ include Capistrano::SimpleSystemd::Helpers
2
+
3
+ namespace :load do
4
+ task :defaults do
5
+ set :service_file_remote_dir, '/etc/systemd/system'
6
+ set :service_file_prefix, -> { fetch(:application) }
7
+ set :enable_services_after_upload, true
8
+ end
9
+ end
10
+
11
+ task :setup do
12
+ invoke 'systemd:upload'
13
+ invoke 'systemd:reload-daemons'
14
+ end
15
+
16
+ namespace :systemd do
17
+ task :upload do
18
+ on release_roles :all do
19
+ each_service_template do |template|
20
+ template_basename = File.basename(template, '.service.erb')
21
+ service_basename = [ fetch(:service_file_prefix), template_basename ].join('-')
22
+ service_filename = "#{service_basename}.service"
23
+ upload_template(template, service_filename)
24
+ end
25
+
26
+ invoke_on_all(:enable) if fetch(:enable_services_after_upload)
27
+ end
28
+ end
29
+
30
+ task :enable do
31
+ on release_roles :all do
32
+ invoke_on_all(:enable)
33
+ end
34
+ end
35
+
36
+ task :disable do
37
+ on release_roles :all do
38
+ invoke_on_all(:disable)
39
+ end
40
+ end
41
+
42
+ task :remove do
43
+ on release_roles :all do
44
+ invoke_on_all(:remove)
45
+ end
46
+ end
47
+
48
+ task :'reload-daemons' do
49
+ on release_roles :all do
50
+ sudo :systemctl, :'daemon-reload'
51
+ end
52
+ end
53
+
54
+ each_service_template do |template|
55
+ template_basename = File.basename(template, '.service.erb')
56
+
57
+ namespace template_basename do
58
+ {
59
+ start: "Run systemctl %{task_name} for %{service} service",
60
+ stop: "Run systemctl %{task_name} for %{service} service",
61
+ reload: "Run systemctl %{task_name} for %{service} service",
62
+ restart: "Run systemctl %{task_name} for %{service} service",
63
+ "reload-or-restart": "Run systemctl %{task_name} for %{service} service",
64
+ enable: "Run systemctl %{task_name} for %{service} service",
65
+ disable: "Run systemctl %{task_name} for %{service} service",
66
+ upload: "Upload service file for %{service} service",
67
+ remove: "Remove service file for %{service} service"
68
+ }.each do |task_name, desc_template|
69
+ desc(desc_template % { service: template_basename, task_name: task_name})
70
+ task task_name do
71
+ service_basename = [ fetch(:service_file_prefix), template_basename ].join('-')
72
+ service_filename = "#{service_basename}.service"
73
+
74
+ on release_roles :all do
75
+ case task_name
76
+ when :upload
77
+ on release_roles :all do
78
+ upload_template(template, service_filename)
79
+
80
+ if fetch(:enable_services_after_upload)
81
+ invoke! "systemd:#{template_basename}:enable"
82
+ end
83
+ end
84
+ when :remove
85
+ invoke "systemd:#{template_basename}:disable"
86
+ service_file_path = "#{fetch(:service_file_remote_dir)}/#{service_filename}"
87
+ sudo :rm, service_file_path
88
+ invoke! "systemd:reload-daemons"
89
+ else
90
+ sudo :systemctl, task_name, "#{service_basename}.service"
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-simple_systemd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Osae
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-26 00:00:00.000000000 Z
11
+ date: 2019-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -25,61 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: sshkit
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.2'
41
- - !ruby/object:Gem::Dependency
42
- name: sshkit-sudo
28
+ name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '0.1'
48
- type: :runtime
33
+ version: '2.0'
34
+ type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '0.1'
40
+ version: '2.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: bundler
42
+ name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '2.0'
47
+ version: '10.0'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '2.0'
54
+ version: '10.0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: rake
56
+ name: byebug
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - "~>"
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: '10.0'
61
+ version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - "~>"
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: '10.0'
68
+ version: '0'
83
69
  description: Simple systemd integration for Capistrano. Uploads service files and
84
70
  provides rake tasks for managing these services
85
71
  email:
@@ -101,15 +87,14 @@ files:
101
87
  - lib/capistrano/simple_systemd/helpers.rb
102
88
  - lib/capistrano/simple_systemd/paths.rb
103
89
  - lib/capistrano/simple_systemd/version.rb
104
- - lib/capistrano/tasks/simple_systemd/global_tasks.rake
105
- - lib/capistrano/tasks/simple_systemd/specific_tasks.rake
106
- - lib/capistrano/tasks/simple_systemd/task_defaults.rake
90
+ - lib/capistrano/tasks/simple_systemd.rake
107
91
  homepage: https://github.com/gkosae/capistrano-simple_systemd.git
108
92
  licenses:
109
93
  - MIT
110
94
  metadata:
111
95
  allowed_push_host: https://rubygems.org
112
96
  homepage_uri: https://github.com/gkosae/capistrano-simple_systemd.git
97
+ changelog_uri: https://github.com/gkosae/capistrano-simple_systemd/blob/master/CHANGELOG.md
113
98
  source_code_uri: https://github.com/gkosae/capistrano-simple_systemd.git
114
99
  post_install_message:
115
100
  rdoc_options: []
@@ -1,45 +0,0 @@
1
- include Capistrano::SimpleSystemd::Helpers
2
- load "#{File.dirname(__FILE__)}/task_defaults.rake"
3
-
4
- namespace :systemd do
5
- task :upload do
6
- original_pty_value = fetch(:pty)
7
- set :pty, true
8
-
9
- each_service_template do |template|
10
- template_basename = File.basename(template, '.service.erb')
11
-
12
- service_basename = [
13
- fetch(:service_file_prefix),
14
- template_basename
15
- ].join('-')
16
-
17
- service_filename = "#{service_basename}.service"
18
- enable_services_after_upload = fetch(:enable_services_after_upload)
19
-
20
- on release_roles :all do
21
- upload_service_file(
22
- compile(File.absolute_path(template)),
23
- service_filename,
24
- fetch(:service_file_remote_dir)
25
- )
26
-
27
- invoke "systemd:#{template_basename}:enable" if enable_services_after_upload
28
- end
29
- end
30
-
31
- set :pty, original_pty_value
32
- end
33
-
34
- task :'reload-daemons' do
35
- on release_roles :all do
36
- sudo :systemctl, :'daemon-reload'
37
- # puts fetch(:service_file_local_dir)
38
- end
39
- end
40
- end
41
-
42
- task :setup do
43
- invoke 'systemd:upload'
44
- invoke 'systemd:reload-daemons'
45
- end
@@ -1,32 +0,0 @@
1
- include Capistrano::SimpleSystemd::Helpers
2
- load "#{File.dirname(__FILE__)}/task_defaults.rake"
3
-
4
- namespace :systemd do
5
- each_service_template do |template|
6
- template_basename = File.basename(template, '.service.erb')
7
-
8
- namespace template_basename do
9
- {
10
- start: "Run systemctl %{task_name} for %{service} service",
11
- stop: "Run systemctl %{task_name} for %{service} service",
12
- reload: "Run systemctl %{task_name} for %{service} service",
13
- restart: "Run systemctl %{task_name} for %{service} service",
14
- "reload-or-restart": "Run systemctl %{task_name} for %{service} service",
15
- enable: "Run systemctl %{task_name} for %{service} service",
16
- disable: "Run systemctl %{task_name} for %{service} service",
17
- }.each do |task_name, desc_template|
18
- desc(desc_template % { service: template_basename, task_name: task_name})
19
- task task_name do
20
- on release_roles :all do
21
- service_basename = [
22
- fetch(:service_file_prefix),
23
- template_basename
24
- ].join('-')
25
-
26
- sudo :systemctl, task_name, "#{service_basename}.service"
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,8 +0,0 @@
1
- namespace :load do
2
- task :defaults do
3
- set :service_file_local_dir, Capistrano::SimpleSystemd::Paths.service_file_local_dir
4
- set :service_file_remote_dir, Capistrano::SimpleSystemd::Paths.service_file_remote_dir
5
- set :service_file_prefix, -> { fetch(:application) }
6
- set :enable_services_after_upload, true
7
- end
8
- end