第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
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
に変更するだけで、本当にマシンが作成されます
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",
(省略)
これで、少し待てば、サーバが出来上がります。
実行後、注文完了メールが来ていることだと思います。