LoginSignup
5
6

More than 5 years have passed since last update.

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

Posted at

第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",

      (省略)

これで、少し待てば、サーバが出来上がります。
実行後、注文完了メールが来ていることだと思います。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6