Class: Zeployment::Aws
- Inherits:
-
Object
- Object
- Zeployment::Aws
- Defined in:
- lib/zeployment.rb
Class Method Summary collapse
- .deploy(name_of_load_balancer, login_command_without_ip, commands_to_run) ⇒ Object
- .deregister_instance_from_load_balancer(name_of_load_balancer, instance_id) ⇒ Object
- .get_ip_address_of_ec2_from_id(instance_id) ⇒ Object
- .get_ip_address_of_ec2_from_id_command(instance_id) ⇒ Object
- .get_load_balancer_instances_description(name_of_load_balancer) ⇒ Object
- .get_load_balancer_particular_instance_data(name_of_load_balancer, instance_id) ⇒ Object
- .get_load_balancers_instances_description_command(name_of_load_balancer) ⇒ Object
- .instance_is_in_service?(name_of_load_balancer, instance_id) ⇒ Boolean
- .login_and_run_commands(login_command, commands_to_run) ⇒ Object
- .number_of_instances_in_service(name_of_load_balancer) ⇒ Object
- .number_of_instances_not_in_service(name_of_load_balancer) ⇒ Object
- .number_of_registered_instances_to_loadbalancer(name_of_load_balancer) ⇒ Object
- .register_instance_with_load_balancer(name_of_load_balancer, instance_id) ⇒ Object
- .wait_till_the_instance_in_service(name_of_load_balancer, instance_id) ⇒ Object
Class Method Details
.deploy(name_of_load_balancer, login_command_without_ip, commands_to_run) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/zeployment.rb', line 74 def self.deploy (name_of_load_balancer, login_command_without_ip, commands_to_run) instances_details = get_load_balancer_instances_description(name_of_load_balancer) instances_details["InstanceStates"].each do |instance| instance_id = instance["InstanceId"] instance_ip = get_ip_address_of_ec2_from_id(instance_id) puts instance_ip deregister_instance_from_load_balancer(name_of_load_balancer, instance_id) login_and_run_commands("#{login_command_without_ip}@#{instance_ip}", commands_to_run) register_instance_with_load_balancer(name_of_load_balancer, instance_id) wait_till_the_instance_in_service(name_of_load_balancer, instance_id) puts ">>>>>>> Instance is in Service now <<<<<<<<<<<<<" end end |
.deregister_instance_from_load_balancer(name_of_load_balancer, instance_id) ⇒ Object
55 56 57 |
# File 'lib/zeployment.rb', line 55 def self.deregister_instance_from_load_balancer (name_of_load_balancer, instance_id) JSON.parse(`aws elb deregister-instances-from-load-balancer --load-balancer-name #{name_of_load_balancer} --instances #{instance_id}`) end |
.get_ip_address_of_ec2_from_id(instance_id) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/zeployment.rb', line 44 def self.get_ip_address_of_ec2_from_id (instance_id) instance_description_response = `#{get_ip_address_of_ec2_from_id_command(instance_id)}` instance_description_hash = JSON.parse(instance_description_response) ip_address = instance_description_hash["Reservations"][0]["Instances"][0]["PublicIpAddress"] return ip_address end |
.get_ip_address_of_ec2_from_id_command(instance_id) ⇒ Object
51 52 53 |
# File 'lib/zeployment.rb', line 51 def self.get_ip_address_of_ec2_from_id_command (instance_id) return "aws ec2 describe-instances --instance-id #{instance_id}" end |
.get_load_balancer_instances_description(name_of_load_balancer) ⇒ Object
12 13 14 15 16 |
# File 'lib/zeployment.rb', line 12 def self.get_load_balancer_instances_description (name_of_load_balancer) load_balancers_instance_description_command = get_load_balancers_instances_description_command (name_of_load_balancer) load_balancer_instances_description = `#{load_balancers_instance_description_command}` return JSON.parse(load_balancer_instances_description) end |
.get_load_balancer_particular_instance_data(name_of_load_balancer, instance_id) ⇒ Object
63 64 65 66 67 |
# File 'lib/zeployment.rb', line 63 def self.get_load_balancer_particular_instance_data (name_of_load_balancer, instance_id) load_balancers_instance_description_command = "aws elb describe-instance-health --load-balancer-name #{name_of_load_balancer} --instances #{instance_id}" load_balancer_instances_description = `#{load_balancers_instance_description_command}` return JSON.parse(load_balancer_instances_description) end |
.get_load_balancers_instances_description_command(name_of_load_balancer) ⇒ Object
18 19 20 |
# File 'lib/zeployment.rb', line 18 def self.get_load_balancers_instances_description_command (name_of_load_balancer) return "aws elb describe-instance-health --load-balancer-name #{name_of_load_balancer}" end |
.instance_is_in_service?(name_of_load_balancer, instance_id) ⇒ Boolean
69 70 71 72 |
# File 'lib/zeployment.rb', line 69 def self.instance_is_in_service? (name_of_load_balancer, instance_id) load_balancer_insrance_data_hash = get_load_balancer_particular_instance_data name_of_load_balancer, instance_id return load_balancer_insrance_data_hash["InstanceStates"][0]["State"] == "InService" end |
.login_and_run_commands(login_command, commands_to_run) ⇒ Object
94 95 96 |
# File 'lib/zeployment.rb', line 94 def self.login_and_run_commands(login_command, commands_to_run) system("#{login_command} << #{commands_to_run} ") end |
.number_of_instances_in_service(name_of_load_balancer) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/zeployment.rb', line 22 def self.number_of_instances_in_service (name_of_load_balancer) instances_in_service = 0 load_balancer_instances_description_hash = get_load_balancer_instances_description(name_of_load_balancer) load_balancer_instances_description_hash["InstanceStates"].each do |instance_state| if instance_state["State"] == "InService" instances_in_service = instances_in_service + 1 end end return instances_in_service end |
.number_of_instances_not_in_service(name_of_load_balancer) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/zeployment.rb', line 33 def self.number_of_instances_not_in_service (name_of_load_balancer) instances_not_in_service = 0 load_balancer_instances_description_hash = get_load_balancer_instances_description(name_of_load_balancer) load_balancer_instances_description_hash["InstanceStates"].each do |instance_state| if instance_state["State"] != "InService" instances_not_in_service = instances_not_in_service + 1 end end return instances_not_in_service end |
.number_of_registered_instances_to_loadbalancer(name_of_load_balancer) ⇒ Object
7 8 9 10 |
# File 'lib/zeployment.rb', line 7 def self.number_of_registered_instances_to_loadbalancer (name_of_load_balancer) load_balancer_instances_description_hash = get_load_balancer_instances_description(name_of_load_balancer) return load_balancer_instances_description_hash["InstanceStates"].length end |
.register_instance_with_load_balancer(name_of_load_balancer, instance_id) ⇒ Object
59 60 61 |
# File 'lib/zeployment.rb', line 59 def self.register_instance_with_load_balancer (name_of_load_balancer, instance_id) JSON.parse(`aws elb register-instances-with-load-balancer --load-balancer-name #{name_of_load_balancer} --instances #{instance_id}`) end |
.wait_till_the_instance_in_service(name_of_load_balancer, instance_id) ⇒ Object
88 89 90 91 92 |
# File 'lib/zeployment.rb', line 88 def self.wait_till_the_instance_in_service(name_of_load_balancer, instance_id) while !instance_is_in_service?(name_of_load_balancer, instance_id) do puts ">>>>>>> Instance Not in Service <<<<<<<<<<<<<" end end |