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