Posted at

RubyからSoftLayerを操作する(その2)

More than 3 years have passed since last update.

第1回からかなり空いての第2回。

APIキーの取得や、アカウント/サーバの情報取得は

前回の記事に記載しています。今回は、サーバ作成です。

前回:RubyからSoftLayerを操作する(その1)

http://qiita.com/rina0521/items/d98e14de523da4397962


サーバの注文情報の作成

SoftLayerは、ポータルからサーバを注文する際に、

とてもたくさんの設定項目があります

下記はサンプルで、恐らく必要項目の最低限です。

シンガポールに、最小限のスペックで、CentOSサーバを作ります。


serverOrder = {
:datacenter => {
:name => "sng01"
},
:hostname => "ApiTest001",
:domain => "test.local",
:startCpus => 1,
:maxMemory => 1024,
:hourlyBillingFlag => true,
:localDiskFlag => true,
:dedicatedAccountHostOnlyFlag => false,
:operatingSystemReferenceCode => "CENTOS_LATEST"
}

hourlyBillingFlag;時間課金か月額課金か

dedicatedAccountHostOnlyFlag:ホストを専有するか

入力できるパラメータについては、

下記メソッドでパラメータのリストを取得できたので、

そこからピックアップして使用しました

SoftLayer_Virtual_Guest::getCreateObjectOptions

(パラメータ量はとても多いです。

 必要な項目だけマスクして表示しようかと思ったのですが、うまく行かず。

 もっといい方法があるのかもしれません……。)


サーバ作成

では、さきほど作成したパラメータで、サーバを作成……

する前に、以下を使って、サーバを作成せずに、

作成するサーバの金額情報だけをチェックします

SoftLayer_Virtual_Guest::generateOrderTemplate


order_test.rb

require 'softlayer_api'

client = SoftLayer::Client.new(
:username => "【ユーザ名】",
:api_key => "【APIキー】"
)

serverOrder = {
:datacenter => {
:name => "sng01"
},
:hostname => "ApiTest001",
:domain => "test.local",
:startCpus => 1,
:maxMemory => 1024,
:hourlyBillingFlag => true,
:localDiskFlag => true,
:dedicatedAccountHostOnlyFlag => false,
:operatingSystemReferenceCode => "CENTOS_LATEST"
}

server_service = client.service_named("SoftLayer_Virtual_Guest")
order_info = server_service.generateOrderTemplate(serverOrder)

p order_info


実行すると、以下の出力が出ます。

{"imageTemplateId"=>"",

(省略)

"prices"=>[
{"hourlyRecurringFee"=>".021",
"id"=>1640,
"recurringFee"=>"15",
"item"=>{
"description"=>"1 x 2.0 GHz Core"}
},
{"hourlyRecurringFee"=>".019",
"id"=>1644,
"recurringFee"=>"12.6",
"item"=>{
"description"=>"1 GB"
}
},

(省略)

"virtualGuests"=>[
{"domain"=>"test.local”,
"hostname"=>"ApiTest001"}
]
}

hourlyRecurringFeeが、時間課金額です

このように、事前に、金額などを見ることができます。

(Webから注文したときと同じですね)

問題ないことを確認した後、今度こそ、サーバを注文してみます。

先ほどと同じ内容で、使用するメソッドを

SoftLayer_Virtual_Guest::createObject

に変更するだけで、本当にマシンが作成されます


order_server.rb

require 'softlayer_api'

client = SoftLayer::Client.new(
:username => "【ユーザ名】",
:api_key => "【APIキー】"
)

serverOrder = {
:datacenter => {
:name => "sng01"
},
:hostname => "ApiTest001",
:domain => "test.local",
:startCpus => 1,
:maxMemory => 1024,
:hourlyBillingFlag => true,
:localDiskFlag => true,
:dedicatedAccountHostOnlyFlag => false,
:operatingSystemReferenceCode => "CENTOS_LATEST"
}

server_service = client.service_named("SoftLayer_Virtual_Guest")
order_info = server_service.createObject(serverOrder)

p order_info


下記のように出力されます。

{“accountId"=>XXXXXX,

"createDate"=>”YYYY—MM-DDT00:00:00+09:00",
"domain"=>"test.local”,
"fullyQualifiedDomainName"=>"ApiTest001.test.local”,
"hostname"=>"ApiTest001",

(省略)

これで、少し待てば、サーバが出来上がります。

実行後、注文完了メールが来ていることだと思います。