A Capistrano recipe that configures AutoScaling on Amazon Web Services infrastructure for your application.
Add this line to your application's Gemfile:
gem 'capistrano-autoscaling'
And then execute:
$ bundle
Or install it yourself as:
$ gem install capistrano-autoscaling
This recipe will try to setup AutoScaling for your appliction. The following actions are prepared to be invoked from Capistrano.
- Create ELB for your application
- Create AMI from EC2 instances behind your ELB
- Create launch configurations from AMI of your application
- Create auto scaling group for your application
To enable this recipe, add following in your config/deploy.rb.
# in "config/deploy.rb"
require "capistrano-autoscaling"
set(:autoscaling_region, "ap-northeast-1")
set(:autoscaling_access_key_id, "PUTYOURAWSACCESSKEYIDHERE")
set(:autoscaling_secret_access_key, "PUTYOURAWSSECRETACCESSKEYHERE")
set(:autoscaling_instance_type, "m1.small")
set(:autoscaling_security_groups, %w(default))
set(:autoscaling_min_size, 2)
set(:autoscaling_max_size, 10)
The following options are preserved to manage AutoScaling.
:autoscaling_region- The region name of AWS.:autoscaling_access_key_id- The access key of AWS. By default, find one from:aws_access_key_idandENV["AWS_ACCESS_KEY_ID"].:autoscaling_secret_access_key- The secret access key of AWS. By default, find one from:aws_secret_access_keyandENV["AWS_SECRET_ACCESS_KEY"].:autoscaling_log_level- The log level for AWS SDK.:autoscaling_application- The basename for AutoScaling configurations. By default, generate from:application.:autoscaling_availability_zones- The availability zones which will be used with AutoScaling. By default, use all availability zones within specified region.:autoscaling_instance_type- The instance type which will be used with AutoScaling. By default, uset1.micro.:autoscaling_security_groups- The security groups which will be used with AutoScaling. By default, use%w(default).:autoscaling_min_size- The minimal size of AutoScaling cluster. By default, use1.:autoscaling_max_size- The maximum size of AutoScaling cluster. By default, use:autoscaling_min_size.
:autoscaling_create_elb- Controls whether create new ELB or not. By defalut,true.:autoscaling_elb_instance- The ELB instance. By default, create new ELB instance if:autoscaling_create_elbis true.:autoscaling_elb_listeners- A Hash of the listener configuration for ELB. By default, generate from:autoscaling_elb_portand:autoscaling_elb_protocol.:autoscaling_elb_port- The ELB port. By default, use80.:autoscaling_elb_protocol- The ELB protocol. By default, use:http.:autoscaling_elb_instance_port- The instance port behind ELB. By default, use:autoscaling_elb_port.:autoscaling_elb_instance_protocol- The instance protocol behind ELB. By default, use:autoscaling_elb_protocol.:autoscaling_elb_healthy_threshold- The healthy threshold of ELB. By default, use10.:autoscaling_elb_unhealthy_threshold- The unhealthy threshold of ELB. By default, use2.:autoscaling_elb_health_check_interval- The health check interval of ELB. By default, use30.:autoscaling_elb_health_check_timeout- The health check timeout of ELB. By default, use5.:autoscaling_elb_health_check_target- The health check target of ELB. By default, generate from first listener in:autoscaling_elb_listeners.:autoscaling_elb_health_check_target_path- The health check target path for HTTP services. By default, use"/".
:autoscaling_ec2_instances- The EC2 instances behind ELB.:autoscaling_ec2_instance_public_dns_names- The DNS name of EC2 instances behind ELB.:autoscaling_ec2_instance_public_ip_addresses- The IP address of EC2 instances behind ELB.:autoscaling_ec2_instance_private_dns_names- The private DNS name of EC2 instances behind ELB.:autoscaling_ec2_instance_private_ip_addresses- The private IP address of EC2 instances behind ELB.
:autoscaling_create_image- Controls whether create new AMI or not. By default,true.:autoscaling_image- The AMI of application. By default, create new AMI if:autoscaling_create_imageis true.:autoscaling_image_extra_options- The extra options for creating new AMIs.:autoscaling_keep_images- How many AMIs do you want to keep onautoscaling:cleanuptask. By default, keep 2 AMIs.
:autoscaling_create_launch_configuration- Controls whether create new launch configuration or not.:autoscaling_launch_configuration- The launch configuration of application. By default, create new launch configuration if:autoscaling_create_launch_configurationis true.:autoscaling_launch_configuration_extra_options- The extra options for creating new launch configurations.
:autoscaling_create_group- Controls whether create new group or not. By default,true.:autoscaling_group- The group for application. By default, create new group if:autoscaling_create_groupis true.:autoscaling_group_extra_options- The extra options for creating new group.
:autoscaling_create_policy- Controls whether create new policies or not.:autoscaling_expand_policy- The scale-out policy.:autoscaling_shrink_policy- The scale-in policy.:autoscaling_expand_policy_adjustment- The scale-out adjustment. By defualt, use1.:autoscaling_shrink_policy_adjustment- The scale-in adjustment. By default, use-1.
:autoscaling_create_alarm- Controls whether create new alarms or not.:autoscaling_expand_alarm_definitions- The definition of scale-out alarms.:autoscaling_shrink_alarm_definitions- The definition of scale-in alarms.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
- YAMASHITA Yuu (https://github.com/yyuu)
- Geisha Tokyo Entertainment Inc. (http://www.geishatokyo.com/)
MIT