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.
52 53 54 55 56 57 58 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 52 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.
61 62 63 64 65 66 67 68 69 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 61 def cleanup instances = config.instances.auto_terminate 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
47 48 49 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 47 def config Capistrano::ASG::Rolling::Configuration end |
#define_tasks ⇒ Object
39 40 41 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 39 def define_tasks eval_rakefile File.('../tasks/rolling.rake', __dir__) end |
#logger ⇒ Object
43 44 45 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 43 def logger @logger ||= Logger.new(verbose: config.verbose?) end |
#register_hooks ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/capistrano/asg/rolling/plugin.rb', line 21 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 |
# 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_verbose, true set_if_empty :asg_rolling_update, true end |