Allow authorized_keys to be overridden at VM checkout time

This commit is contained in:
Scott Schneider 2014-11-14 12:50:19 -08:00
parent 591c5a0391
commit 4c4f637075
3 changed files with 23 additions and 0 deletions

View file

@ -2,10 +2,12 @@ require 'rubygems' unless defined?(Gem)
module Vmpooler
require 'json'
require 'net/scp'
require 'open-uri'
require 'rbvmomi'
require 'redis'
require 'sinatra/base'
require 'stringio'
require 'time'
require 'timeout'
require 'yaml'

View file

@ -190,6 +190,10 @@ module Vmpooler
jdata = JSON.parse(request.body.read)
jdata.each do |template, count|
if (template == 'key')
result['key'] = count
end
if ( $redis.scard('vmpooler__ready__'+template) < count.to_i )
available = 0
end
@ -199,6 +203,10 @@ module Vmpooler
result['ok'] = true
jdata.each do |template, count|
if (template == 'key')
next
end
result[template] ||= {}
result[template]['ok'] = true ##
@ -214,6 +222,13 @@ module Vmpooler
result[template]['ok'] = true ##
if ( result['key'] and $config[:config]['ssh_key'] )
Net::SCP.upload!(
vm, 'root', StringIO.new(result['key']), '/root/.ssh/authorized_keys',
:ssh => { :keys => [ $config[:config]['ssh_key'] ] }
)
end
if ( result[template]['hostname'] )
result[template]['hostname'] = [result[template]['hostname']] if ! result[template]['hostname'].is_a?(Array)
result[template]['hostname'].push(vm)