2011-01-21 6 views
5

Sto utilizzando il binding Ruby all'API CloudServers per creare un cluster di macchine.Il campo "personalità" dell'API di Rackspace Cloud Servers funziona?

L'API include la possibilità di "iniettare" file nel filesystem della macchina appena creata, utilizzando un campo chiamato "personalità". Tuttavia, non sono in grado di caricare file tramite il tasto "personalità". La macchina è stata creata correttamente, ma il file non è presente quando viene creato il server.

Ecco uno script di test che illustra questo:

#!/usr/bin/env ruby 
require 'rubygems' 
require 'cloudservers' 

cs = CloudServers::Connection.new(:username=>"user",:api_key=>"key") 

begin 
    server = cs.create_server(:flavorId=>1, 
       :name=>"personality-test", 
       :imageId=>7888402, 
       :personality=>{"/tmp/foo"=>"/tmp/foo" }) 
rescue 
    print "Failed to create server ", $!, "\n" 
end 

nessuno è stato in grado di fare questo lavoro?

risposta

2

Non sono sicuro di quale libreria si sta utilizzando, ma ho utilizzato con successo le personalità tramite il back-end di Rackspace Cloud di Fog.

server = Fog::Compute.new(:provider => 'Rackspace', 
          :rackspace_username => config[:rackspace_api_username], 
          :rackspace_api_key => config[:rackspace_api_key]) 
server.flavor_id = sizes[args[:size]] 
server.image_id = 49 # Ubuntu 10.04 
server.name = args[:fqdn] 

server.personality = [ 
    { 
    'path' => '/etc/install-chef', 
    'contents' => File.read("install-chef.sh") 
    } 
] 
server.save