class Hyrb::Tasks::Provision::DigitalOcean
Public Instance Methods
run(env)
click to toggle source
# File lib/hyrb/tasks/provision.rb, line 17 def run(env) ssh_key_ids = env.project.developers(env.developers).map(&:digital_ocean_id).compact flavor_id = option_list(env.digital_ocean_cache, :flavors, 2) do |f, i| "#{i+1}: #{f.name} ram / #{f.cpu} cpu / #{'$%.2f/mo' % f.cost_per_month}" end.id image_id = option_list(env.digital_ocean_cache, :images, 16) do |f, i| "#{i+1}: #{f.name} / id: #{f.id}" end.id region_id = option_list(env.digital_ocean_cache, :regions, 2) do |f, i| "#{i+1}: #{f.name} / id: #{f.id}" end.id say "Creating Digital Ocean Server" server = env.digital_ocean_client.servers.create({ name: env.environment.server_name, flavor_id: flavor_id, image_id: image_id, region_id: region_id, ssh_key_ids: ssh_key_ids, }) env.environment.provider = 'digital_ocean' env.environment.server_id = server.id sleep(4) until server.reload.ready? env.environment.host = server.public_ip_address env.environment.save! say "Created Digital Ocean Server!", :green say "IP Address: #{server.public_ip_address} / ID: #{server.id}", :green say "\n\tssh root@#{server.public_ip_address}\n" beep end