Class: Capistrano::ASG::Rolling::Plugin
- Inherits:
-
Plugin
- Object
- Plugin
- Capistrano::ASG::Rolling::Plugin
- Defined in:
- lib/capistrano/asg/rolling/plugin.rb
Overview
Load this Capistrano Plugin in your Capfile:
require 'capistrano/asg/rolling' install_plugin Capistrano::ASG::Rolling::Plugin
Instance Method Summary collapse
-
#add_instance(instance, properties) ⇒ Object
Add an instance to the Capistrano server list, with the given properties.
-
#cleanup ⇒ Object
Make sure any instances that were launched for rolling updates are terminated.
- #config ⇒ Object
- #define_tasks ⇒ Object
- #logger ⇒ Object
- #register_hooks ⇒ Object
- #set_defaults ⇒ Object
Instance Method Details
#add_instance(instance, properties) ⇒ Object
Add an instance to the Capistrano server list, with the given properties.
54 55 56 57 58 59 60 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 54 def add_instance(instance, properties) server_properties = properties.merge(instance_id: instance.id) logger.verbose "Adding server: **#{instance.ip_address}**" server(instance.ip_address, server_properties) end |
#cleanup ⇒ Object
Make sure any instances that were launched for rolling updates are terminated.
63 64 65 66 67 68 69 70 71 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 63 def cleanup instances = config.instances.auto_terminatable return if instances.empty? logger.info 'Terminating instance(s)...' instances.terminate rescue Capistrano::ASG::Rolling::InstanceTerminateFailed => e logger.warning "Failed to terminate Instance **#{e.instance.id}**: #{e.}" end |
#config ⇒ Object
49 50 51 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 49 def config Capistrano::ASG::Rolling::Configuration end |
#define_tasks ⇒ Object
41 42 43 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 41 def define_tasks eval_rakefile File.('../tasks/rolling.rake', __dir__) end |
#logger ⇒ Object
45 46 47 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 45 def logger @logger ||= Logger.new(timestamp: config., verbose: config.log_verbose?) end |
#register_hooks ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 22 def register_hooks Capistrano::DSL.stages.each do |stage| after stage, 'rolling:setup' end after 'deploy', 'rolling:update' after 'deploy:failed', 'rolling:cleanup' after 'rolling:update', 'rolling:cleanup' after 'rolling:create_ami', 'rolling:cleanup' after 'rolling:update', 'rolling:instance_refresh_status' after 'rolling:trigger_instance_refresh', 'rolling:instance_refresh_status' # Register an exit hook to do some cleanup when Capistrano # terminates without calling our after cleanup hook. at_exit { cleanup } end |
#set_defaults ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 14 def set_defaults set_if_empty :asg_rolling_group_name, ENV.fetch('asg_name', nil) set_if_empty :asg_rolling_use_private_ip_address, true set_if_empty :asg_rolling_log_verbose, true set_if_empty :asg_rolling_log_timestamp, false set_if_empty :asg_rolling_update, true end |