2015年4月15日水曜日

SoftLayerの管理コマンドをWindowsに導入するには

SoftLayerに限らず、パブリッククラウドのいいところは、全てがコマンドで管理できることです。GUIも便利なんですが、定型処理の繰り返しや、間違い防止にはやはりコマンドが便利です。

GUIで、クリックするところを1cm間違えたら[はい]と[いいえ]が逆になりますが、タイプするキーを間違えてもほとんどの場合は単にエラーになるだけです。

Microsoft Azureの管理は、単体のコマンドもありますが、PowerShellで行うのが一般的です。PowerShellはWindowsに標準搭載されている馴染み深いツールですし、そもそもMicrosoft AzureはWindowsのサポートを最優先で行ってくれます。

ツールはMicrosoft Azureの管理ポータルサイトMicrosoft Azureのホームページから簡単にたどれますし(Microsoft Azureダウンロードサイト)、インストールも簡単です。

Amazon Web Servicesも、コマンドラインツールとPowerShellツールが「アマゾン ウェブ サービスのツール」として分かりやすい場所にあります。

ところが、IBMが提供するSoftLayerは、Python言語のインターフェースを使う関係で少々複雑です。

調べたら、Mitsu-Murakitaさんのブログ記事「SoftLayer Command Line Interface環境の導入」に詳しい手順が出ていました。この通りに設定すればうまくいきます。ありがとうございました。

ただし、ツールのバージョンが変わったのか、少し冗長な部分もあるので、整理したものを改めて書いてみたいと思います。

主な手順は以下の通りです。

  1. Pythonの導入
  2. SoftLayer管理ツールの導入
  3. SoftLayerを制御するAPIキーの取得
  4. SoftLayer管理ツールの初期化

順に設定していきましょう。

なお、Pythonは複数のバージョン系列があります。記事では2系で試していますが、私は3系で問題なくインストールできました。

また、ツール自体のバージョンもメジャーチェンジがあったようですので、ご注意ください。新版ではコマンド名もslからslcliに変わっています。

ブログ記事「SoftLayer API Python Client 4.0.0 でもう一度」によると、今のところ旧バージョンの方が一般的なようです。今回も、広く使われている旧版をインストールします。

 

1. Pythonの導入

  1. Pythonの公式サイトから[Downloads]-[Windows]を選択
  2. 適切なバージョンのPythonを選択
    今回は「Latest Python 3 Release - Python 3.4.3」を選びました。
  3. インストーラー付きのパッケージをダウンロードしてインストール
    今回は「Windows x86-64 MSI installer」ダウンロードしました。
    32ビット版OSの方は「Windows x86 installer」をどうぞ。
  4. インストールオプション[Add python.exe to Path]を有効化
    既定で無効になっている唯一のオプションです(一番下にあります)。
    このオプションを有効にすると、環境変数PATHの設定が不要になります。

Pythonは、バージョン2系の方が広く使われているそうですが、今後は3系に移行するということでした。SoftLayerのツールの制限については確認していませんが、どちらでも動くようです。

必要に応じて、環境変数PATHを変更します。インストール時に[Add python.exe to Path]を指定していれば、C:\Python34\;C:\Python34\Scripts が先頭に追加されるので何もしなくて構いません(Pythonバージョン3.4の場合)。

環境変数の設定は間違えやすいので、自信のない方は自動構成をおすすめします。

Windows Installerは、何度インストール作業を行っても問題ないようにできています。起動後、[Repair](修復)というオプションを選べば同じ構成で、[Change](変更)を選べば異なる構成で再インストールできます。

インストールが終わったら、pythonコマンドを実行して、プロンプト >>> が出てくれば成功です。終了ははCtrl-Zを入力するかexit()を実行します。

 

2. SoftLayer管理ツールの導入

SoftLayer管理ツールの導入には、以下の追加ファイルが必要です。

  1. setuptools (ez_setup.py)
  2. pip (get_pip.py)

wgetというツールを使えば、直接ファイルに保存できるのですが、以下の方法でも可能です。

  1. 上記のリンクにアクセスし、Pythonのスクリプトを表示
  2. [Ctrl-A]→[Ctrl-C]で全体をクリップボートに保存
  3. メモ帳を起動
  4. [Ctrl-V]でメモ帳に貼り付け
  5. 名前を付けて、適当な場所に保存
    この時「ファイルの種類」として「すべてのファイル」を選択してください。ファイル名は括弧内に示したとおり、ez_setup.pyとpip.pyです。拡張子も書いてください。 「すべてのファイル]を選択しないと「pip.py.txt」のようなファイルができてしまいます。
  6. ファイルの保存先フォルダーで、python ez_setup.pyを実行
    セットアップツール本体のダウンロードも行うため、少し時間がかかります。
  7. ファイルの保存先フォルダーで、python pip.pyを実行
    同じく少し時間がかかります。
  8. pip install softlayerを実行
    Pythonのインストールツールpipがインストールされたので、これを使ってSoftLayer管理ツールを導入します。

 

3. SoftLayerを制御するAPIキーの取得

SoftLayerの管理ポータルにアクセスし、APIキーを取得します。

  1. SoftLayerの管理ポータルにアクセスし、ログオン
  2. [Users]で、管理に使うユーザー名を書き留める
    SL123456形式のマスターユーザーでも、子ユーザーでも構いません。
  3. そのユーザーのリンクを選択
  4. [API Access Information]から[Authentication Key:]を書き留める
    (例: 7bf4b35eb105767c15.... という長い文字列)

SoftLayer-API

後述するように、実際にはAPIキーを知らなくても、ユーザー名とパスワードが分かっていれば構成は可能です。実際にはその方が便利でしょう。

 

4. SoftLayer管理ツールの初期化

以上で、slコマンドが使えるようになりました。最後に、SoftLayerのアクセス情報を登録して完了です。

赤字が入力文字、青字が説明文です。レイアウトの都合で、一部の文字を削除しています。

C:\> sl config setup            ←初期化コマンド
Username []: yokoyama ←ユーザー名(追加ユーザーでも可)
API Key or Password []:XXXXX ←APIキーまたはユーザーパスワード
Endpoint (public|private|custom): public ←後述
:..............:.............................................
:    Name : Value
:..............:.............................................
: Username : yokoyama
:      API Key : XXXXXXXXXXXXXXXXXXXXXXX
: Endpoint URL : https://api.softlayer.com/xmlrpc/v3.1/
:      Timeout : not set
:..............:.............................................
Are you sure you want to write settings to "C:\Users\yokoyama/.softlayer"? [Y/n]: y←情報の保存の可否
Configuration Updated Successfully

endpointは、APIアクセス用のURLで、以下の3つのいずれかを指定します。



  • public…インターネットなどのパブリックネットワークから利用する場合
  • private…SoftLayer内部のプライベートネットワークから利用する場合
  • custom…任意のURLを指定(使うことはあまりないでしょう)

構成情報は、ユーザープロファイルフォルダーに「.softlayer」という名前で保存されます。ピリオドで始まるファイル名は、UNIX系の作法に従った初期化ファイルです。


なお、初期化時にパスワードを指定した場合でも、保存されるのはAPIキーのみです。ユーザー名とパスワードを指定した時点で、SoftLayerにアクセスしてAPIキーを取得しているようです。


パスワードが保存されないのは安全でいいのですが、APIキーを使えばSoftLayerの管理作業が可能です。構成ファイルはプレーンテキストなので、セキュリティには十分注意してください。既定では、プロファイルフォルダーは本人しか読み取りの権限がありません。


たとえば、以下のコマンドはクラウド上の仮想マシン一覧を表示します。


sl vs list


 


終わりに


クラウドサービスが提供する仮想マシンは、必ずしも最安値ではありません。クラウドの価値は、単純な価格ではなく、必要な時にいくらでもリソースを追加でき、不要になったら解除できること、そして自動構成が可能なことです。そして、自動構成をするにはAPIやコマンドの利用が不可欠です。


また、パブリッククラウドクラウドの管理WebサイトのGUIはしばしば予告なく変わります。せっかく作った操作マニュアルがある日突然使えなくなったり、既定値が変わったりします。


その点、コマンドが変わることはあまりありませんし、APIの変更はもっと少ないでしょう。コマンドというと、熟練者が使うイメージが強いようですが、「見たまま打てば成功する」ので、実は初心者にも優しいインターフェースです。


GUIは「概念は分かっているけど、細かい手順は覚えていない」という方に適しています。一方、コマンドは「全てを理解して、覚えている」上級者に加えて「概念も手順も分かっていないけど、決められた仕事を遂行しなければならない」初級者にも向いています。


このように、コマンドというのは実は初級者から上級者まで(初級者と上級者に)優しいインターフェースなのです。


DSC00418M
▲猫といえばマウスですが、最近はキーボードも使います
(Ctrl-Alt-Delを押すのは無理なようです)