Class: Provisionator::Ec2Launcher
- Inherits:
-
Object
- Object
- Provisionator::Ec2Launcher
- Defined in:
- lib/provisionator/ec2_launcher.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Ec2Launcher
constructor
A new instance of Ec2Launcher.
- #launch ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Ec2Launcher
Returns a new instance of Ec2Launcher.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/provisionator/ec2_launcher.rb', line 12 def initialize ={} %w{ AWS_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY}.each do |env_var| raise "ENV['#{env_var}'] is required to be set" unless ENV[env_var] end @options = @options[:instance_type] ||= ENV['P_INSTANCE_TYPE'] || 'm1.small' @options[:no_release] ||= ENV['P_NO_RELEASE'] @options[:ami_id] ||= ENV['P_AMI_ID'] || ami_id @options[:ebs_volumes] ||= [] @options[:key_name] ||= ENV['P_KEY_NAME'] @options[:security_groups] ||= ENV['P_SECURITY_GROUPS'].try(:split, ',') @options[:availability_zones] ||= ENV['P_AVAILABILITY_ZONES'].try(:split, ',') || ec2.availability_zones.map(&:name) @options[:instance_count] ||= ENV['P_INSTANCE_COUNT'].try(:to_i) || 1 @options[:load_balancer_name] ||= ENV['P_LOAD_BALANCER_NAME'] [:app_name, :chef_node, :ami_id, :key_name, :security_groups].each do |option| raise "option ':#{option}' is required" if [option].nil? end end |
Class Method Details
.launch(options = {}) ⇒ Object
8 9 10 |
# File 'lib/provisionator/ec2_launcher.rb', line 8 def self.launch ={} new().launch end |
Instance Method Details
#launch ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/provisionator/ec2_launcher.rb', line 33 def launch puts "Launching #{@options[:instance_count]} #{@options[:instance_type]} instance/s..." instances = launch_instances wait_for_instances instances register_with_load_balancer instances assign_elastic_ip instances.first instances.each do |instance| puts "Launched instance #{instance.id}, status: #{instance.status}, public dns: #{instance.dns_name}, public ip: #{instance.ip_address}" end end |