require "meroku/infrastructure/node" module Meroku module Infrastructure def spawn(session) node = Meroku::Infrastructure::Node.new(session.ec2_client) node.associate_address node.install_packages node.tweak_configuration node.install_frontend_app puts "spawned #{node.instance.try(:instance_id)}" end def despawn instances = ec2_client.describe_instances(filters:[{ name: "tag:Name", values: ['node'] }, { name: 'instance-state-name', values: ['running','pending'] }]).reservations.map { |xx| xx.instances.first.instance_id } puts "will despawn #{instances.inspect}" ec2_client.terminate_instances({ instance_ids: instances }) if instances.size > 0 end end end