3
3

More than 3 years have passed since last update.

ShinobiLayer: Virtual Serverの作成者や稼動ホストのRack/Slot情報を確認するスクリプト

Last updated at Posted at 2015-01-06

はじめに

仮想サーバーがどのデータセンターで動いているかという情報だけではなく、更に一歩踏み込んで「どのサーバールームの、どのラックの、どのスロットで動いているのかを確認したいのだけど、具体的にどうやれば確認できるのでしょうか?」という話をよく聞きます。
Publicクラウドでこうした情報が欲しいというのはちょっと欲張りな感じがしますが、実はSoftLayerでは確認することができます。とはいっても、ポータルからは確認できないので、APIを使って自分で実装しないといけないのですが、、、そうした実装をするのは敷居が高いという方もいらっしゃるでしょう。
また、サーバーの注文者を知りたいという用件もよく聞きますが、こちらもAPIを使って実装する必要があります。こちらもよく利用するにも関わらずポータルからは確認が難しい内容の1つです。
というので、サンプルスクリプトを提供しようと思います。何やっているか分からないよ!っていう方は、是非(今後継続連載予定の)記事もご参考にしていただければ幸いです。
http://qiita.com/testnin2/items/f04ca0cee9b2f0a8f830

スクリプト(2015/11/27修正版)

getVsLocation.py
import SoftLayer
from prettytable import PrettyTable

client = SoftLayer.create_client_from_env()

_mask = '''
    id,
    fullyQualifiedDomainName,
    operatingSystem,
    billingItem.orderItem.order.userRecord.username,
    primaryIpAddress,
    primaryBackendIpAddress,
    datacenter,
    serverRoom,
    location.pathString '''

table = PrettyTable(['id',
                     'FQDN',
                     'Operating System',
                     'Owner',
                     'Primary IP',
                     'Backend IP',
                     'DataCenter',
                     'Server Room',
                     'location detail'])

virtualGuests = client['Account'].getVirtualGuests(mask=_mask)
for vg in virtualGuests:
    if ('fullyQualifiedDomainName' in vg and
                'operatingSystem' in vg and
                'billingItem' in vg and
                'primaryBackendIpAddress' in vg and
                'datacenter' in vg and
                'serverRoom' in vg and
                'location' in vg):
        table.add_row([vg['id'],
                       vg['fullyQualifiedDomainName'],
                       vg['operatingSystem']['softwareLicense']['softwareDescription']['longDescription'],
                       vg['billingItem']['orderItem']['order']['userRecord']['username'],
                       vg.get('primaryIpAddress') or "--",
                       vg['primaryBackendIpAddress'],
                       vg['datacenter']['longName'],
                       vg['serverRoom']['longName'],
                       vg['location']['pathString']])

print(table)

実行結果の例

slコマンドが実行できるようになっていることが前提です。
# python getVsLocation.py
のようにして実行して下さい。

VS_locatoin.jpg

表の意味

意味
ID VirtualGuestオブジェクトのID
FQDN 仮想サーバーのFQDN
Operating System 仮想サーバーのOS
Owner 仮想サーバーの注文者
Primary IP 仮想サーバーのPublic IP
Backend IP 仮想サーバーのPrivate IP
DataCenter 仮想サーバーが存在するデータセンター
Server Room 仮想サーバーが存在するサーバールーム
location detail 「sng01.rk401.sl11」は、データセンター: SNG01、ラック:rk401、スロット:sl11を、「dal05.sr01.rk05.sl40」は、データセンター: DAL05、サーバールーム:sr01、ラック情報:rk05、スロット情報:sl40を意味していると思われます。サーバーによって、サーバールーム情報が含まれていたり含まれていなかったりする理由は、よく分かりません。。。
3
3
13

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
3
3