capistrano-cookbook 5.0.1 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ccf86ecd4d2c04f71dd86f6aaf38877d57c1b7482e21435986b58dcbd768e18c
4
- data.tar.gz: 1a9f6bc210c07faf2c998ad13f438b97ac4efbccdb3734993e173f94cf7953be
3
+ metadata.gz: 460d15f3368c78001b83e7796c72a59fa79aa94343c38f3da70c3b3ff96d9638
4
+ data.tar.gz: 8d0dcdb74815085641a8261ec3e70ad9c0f89479afdb5912f6384e2479320260
5
5
  SHA512:
6
- metadata.gz: 936557739c95b9b6c4d2f7bc92fa300778437e0c335b84670c7b4d9e67dce28daa65196f0713cf2e9babdb3fe913777c181bf5587f9378880b4567f091453893
7
- data.tar.gz: e55cb0581cfdde734cdea13b675ccb89aea40f1fab79c1280b1eda86590b37fb0cb3c22af6565d56e94d7fb4466b80d6823cb398ccb39d5b16e4277bd85066a2
6
+ metadata.gz: 9ca03266e0bbf51396d2c5d761c6150ff12a2693f2d107e5f6b8b82efd37aa82d54e44011c14f501d20d929e0538c9a6818d579e6881f0aa0f012a340beaf6a0
7
+ data.tar.gz: db4ec41d34d1686705b6bd2e2dd7eb19bca928339106d76c6ab63336f7ece0461868ac7ba3c539b96c756170b366bbb6b00839158c761f0ef43a4f11b985253b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.0.2 (April 2021)
4
+
5
+ - Adds support for automatically adding SSL certificates via Certbot
6
+
3
7
  ## 5.0.1 (March 2021)
4
8
 
5
9
  - Adds full support for deploy (but not config creation) without sudo access
@@ -2,14 +2,15 @@ require "capistrano/cookbook/version"
2
2
 
3
3
  module Capistrano
4
4
  module Cookbook
5
+ require 'capistrano/cookbook/certbot'
5
6
  require 'capistrano/cookbook/check_revision'
7
+ require 'capistrano/cookbook/create_database'
6
8
  require 'capistrano/cookbook/logs'
7
9
  require 'capistrano/cookbook/monit'
8
10
  require 'capistrano/cookbook/nginx'
11
+ require 'capistrano/cookbook/puma_systemd'
9
12
  require 'capistrano/cookbook/run_tests'
10
13
  require 'capistrano/cookbook/setup_config'
11
- require 'capistrano/cookbook/create_database'
12
- require 'capistrano/cookbook/puma_systemd'
13
14
  require 'capistrano/cookbook/sidekiq_systemd'
14
15
  end
15
16
  end
@@ -0,0 +1 @@
1
+ load File.expand_path("tasks/certbot.cap", File.dirname(__FILE__))
@@ -0,0 +1,9 @@
1
+ namespace :certbot do
2
+ desc "Setup certbot certificate for the domain defined in `nginx_server_name` in the stage file"
3
+ task :install do
4
+ on roles(:app) do
5
+ return unless fetch(:certbot_enable_ssl)
6
+ sudo "certbot --nginx -d #{fetch(:nginx_server_name)} --non-interactive --agree-tos --email #{fetch(:certbot_email)} #{fetch(:certbot_redirect_to_https) ? '--redirect' : ''} #{fetch(:certbot_use_acme_staging) ? '--dry-run' : ''}"
7
+ end
8
+ end
9
+ end
@@ -57,6 +57,7 @@ after 'deploy:setup_config', 'puma:nginx_config'
57
57
  after 'deploy:setup_config', 'puma:monit:config'
58
58
  after 'deploy:setup_config', 'puma:systemd:config'
59
59
  after 'deploy:setup_config', 'puma:systemd:enable'
60
+ after 'deploy:setup_config', 'certbot:install'
60
61
 
61
62
  # Enable the sidekiq systemd service so that it's started automatically on (re)boot
62
63
  after 'deploy:setup_config', 'sidekiq:systemd:enable' if (defined?(Capistrano::Sidekiq) == 'constant' && Capistrano::Sidekiq.class == Class)
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Cookbook
3
- VERSION = "5.0.1"
3
+ VERSION = "5.0.2"
4
4
  end
5
5
  end
@@ -9,11 +9,19 @@ module Capistrano
9
9
  class_option :sidekiq, type: :boolean, default: false
10
10
  class_option :production_hostname, type: :string, default: nil
11
11
  class_option :production_server_address, type: :string, default: nil
12
+ class_option :certbot_enable, type: :boolean, default: false
13
+ class_option :certbot_email, type: :string
12
14
 
13
15
  def setup
14
16
  @production_hostname = options[:production_hostname] || 'YOUR_PRODUCTION_HOSTNAME'
15
17
  @production_server_address = options[:production_server_address] || 'YOUR_PRODUCTION_SERVER_ADDRESS'
16
18
  @generate_sidekiq = options[:sidekiq]
19
+ @certbot_enable = options[:certbot_enable]
20
+ @certbot_email = options[:certbot_email]
21
+ end
22
+
23
+ def check_domain
24
+ raise 'The `_` chatacter is not valid in domain names' if @production_hostname.include?('_')
17
25
  end
18
26
 
19
27
  def create_capfile
@@ -13,6 +13,12 @@ set :rbenv_ruby, '3.0.0'
13
13
  set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
14
14
  set :rbenv_map_bins, %w{rake gem bundle ruby rails}
15
15
 
16
+ # setup certbot for SSL via letsencrypt
17
+ set :certbot_enable_ssl, <%= @certbot_enable %>
18
+ set :certbot_redirect_to_https, true
19
+ set :certbot_email, "<%= @certbot_email %>"
20
+ set :certbot_use_acme_staging, false
21
+
16
22
  # setup puma to operate in clustered mode, required for zero downtime deploys
17
23
  set :puma_preload_app, false
18
24
  set :puma_init_active_record, true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-cookbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Dixon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2021-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -97,6 +97,7 @@ files:
97
97
  - lib/capistrano/.DS_Store
98
98
  - lib/capistrano/cookbook.rb
99
99
  - lib/capistrano/cookbook/.DS_Store
100
+ - lib/capistrano/cookbook/certbot.rb
100
101
  - lib/capistrano/cookbook/check_revision.rb
101
102
  - lib/capistrano/cookbook/compile_assets_locally.rb
102
103
  - lib/capistrano/cookbook/create_database.rb
@@ -110,6 +111,7 @@ files:
110
111
  - lib/capistrano/cookbook/run_tests.rb
111
112
  - lib/capistrano/cookbook/setup_config.rb
112
113
  - lib/capistrano/cookbook/sidekiq_systemd.rb
114
+ - lib/capistrano/cookbook/tasks/certbot.cap
113
115
  - lib/capistrano/cookbook/tasks/check_revision.cap
114
116
  - lib/capistrano/cookbook/tasks/compile_assets_locally.cap
115
117
  - lib/capistrano/cookbook/tasks/create_database.cap