RackTablesインプレッション

openDCIMに引き続き、もうひとつのデータセンター管理ツールである[RackTables](http://racktables.org/)を評価してみたいと思います。今回はRackTables-0.20.11をインストールしてみました。

#動作環境

Linux, Apache, MySQL, PHP の古き良き伝統的LAMPです。httpsが推奨ですが、無暗号httpでも動きます。httpdは必ずしもApacheである必要はなく、nginxでも動きます。

PHPは、[PDO](http://php.net/manual/ja/book.pdo.php), [PDO_MySQL](http://php.net/manual/ja/ref.pdo-mysql.php), [PCRE](http://php.net/manual/ja/book.pcre.php), [GD](http://php.net/manual/ja/book.image.php), [mbstring](http://php.net/manual/ja/book.mbstring.php), [JSON](http://php.net/manual/ja/book.json.php), [BC Math](http://php.net/manual/ja/book.bc.php)が必須です。[SNMP](http://php.net/manual/book.snmp.php), [LDAP](http://php.net/manual/ja/book.ldap.php), [PCNTL](http://php.net/manual/ja/book.pcntl.php), [cURL](http://php.net/manual/ja/book.curl.php)は、あれば使われますが、なくても動きます。

Windowsにインストールする場合は、PHPのis_writable()関数が誤った値を返すためにインストーラが先へ進まなくなる問題への対処とか、そういった細々とした技巧が必要な場合があるようです。

#インストール

[公式手順](http://wiki.racktables.org/index.php/RackTablesInstallHowto)通りでおおむね大丈夫です。

アーカイブを展開して出てくるファイルのうち、実際に使うのは``RackTables-0.20.11/wwwroot``フォルダの下のファイルだけです。それとMySQLのデフォルトパラメータ（ユーザ名、パスワード、データベース名）は[公式手順](http://wiki.racktables.org/index.php/RackTablesInstallHowto)のものとは違い、``RackTables-0.20.11/wwwroot/inc/install.php``に書いてある以下の値です。ここはインストーラーの指示に従って進めていけば大丈夫です。

```php
                $use_tcp = TRUE,
                $tcp_host = 'localhost',
                $tcp_port = '',
                $unix_socket = '/var/lib/mysql/mysql.sock',
                $database = 'racktables_db',
                $username = 'racktables_user',
                $password = ''
```

インストールが完了すると、ユーザ名adminのユーザーが一人定義されている状態になりますので、これでログインするとメインメニューが出てきます。

#ラックスペース

早速使っていきましょう。ラックスペースの管理単位は以下の３階層です。

|粒度|管理単位の名前|参考和訳|
|:--|:--|:--|
|大まか|location|場所|
||row|架列|
|細かい|rack|架|

locationは複数作って上下関係を持たせることができます。上下関係とは、例えば「東京第一データセンター」と「1階」と「2階」という3つのlocationを作成し、「東京第一データセンター」の下に「1階」と「2階」を配置するとか、そんな運用ができるということです。

架の中はUに分かれていますが、Uごとに前面・内部・背面がありますので、例えば42Uの架なら42×3=126個の管理単位があることになります。

#オブジェクト

架の中に設置する機器はobjectと呼ばれます。Main PageからObjectsのページへと進み、Add moreタブからオブジェクトを作成します。次にBrowseタブからオブジェクトを選択し、Rackspaceタブを開いて架に積んでいきます。

どうもRackspaceとObjectの間の横の導線が意外に希薄で、何をするにもいちいちMain Pageに戻る操作が発生しがちなのがRackTablesのGUIの特徴のようです。

RackTablesの架は、Uの数×3個（3とは前面・内部・背面）のチェックボックスが並んだものです。そのチェックボックスをチェックして搭載場所を指定するわけですが、どういうわけか、連続した場所でなくても構いません。「飛び地」を指定できます。なんだか物理的に想像できない世界ですが、そこはユーザーの自己責任に任されているのでしょう。

オブジェクト画面のPortsタブからポートを定義することで通信線の管理ができます。電源線管理はありません。

#IPアドレス

実に残念なことに、IPアドレスの重複が許容される前提の設計ではありません。つまり、既にプライベートIPアドレスを使い切ってしまい、VRFを駆使して複数個の論理ネットワークに分割して乗り切っている状況下では、RackTablesのIPアドレス管理機能は使えないのです。これは痛い。。。

#VLAN管理 (IEEE802.1Q)

RackTablesのVLAN管理は、かなり独特です。

まず、VLAN IDの上位にVLAN domainという管理単位があります。VLAN IDを登録するときは、まずVLAN domainを作り、そこに所属するVLAN IDを書き並べていくイメージです。[VTP](http://www.cisco.com/cisco/web/support/JP/100/1008/1008371_21-j.html)を使っている場合、RackTablesのVLAN domainをVTPのドメインに合わせることもできそうです。もちろん合わせないこともできます。このあたりはユーザーの自己責任に任されているようです。VLAN domainは、複数個作って上下関係を持たせることができます。

さらに独特なことに、SNMPでは飽き足らず、RackTablesが自らtelnetプロトコルを駆使してスイッチのコンソールにログインしに行く機能があります。[本家Wiki](http://wiki.racktables.org/index.php/8021Q)に詳細が書いてありますが、switch templateという設定項目はこの機能のためにあるようです。

と、いったところで現在挫折しております。いろいろと多機能らしいのですが、まだ私には全貌を理解できておりません。。。

#考察

##とっつきやすいか？

RackTablesのメインメニュー12項目あるうち、ここまでで Rackspace, Objects, IPv4 space, 802.1Q の4項目を見てきました。 IPv6 space, Files, Reports, IP SLB, Configurations, Log records, Virtual Resources, Patch cables の8項目が手つかずですが、すみません、触ってみましたがよく分かりませんでした。。。

正直なところ、とっつきやすくはないという印象ですが、一つ一つの機能要素がかなり独立しているので、当面必要なものから順に少しずつ制覇していく覚え方が効果的です。最初から全部覚える必要はありません。

#openDCIMとどちらが良いか？

まさに物理層的な、文字通りのインフラ（電力、重量など）を重視するなら、間違いなくopenDCIMのほうが上です。

一方、RackTablesの売りは、より上位のレイヤであるVLANやIPアドレスの管理にあります。ここはRackTablesの機能仕様が御社のネットワークの実情に合っているかが重要で、うまく嵌れば素晴らしい威力を発揮するし、合わなければ業務の足を引っ張る邪魔者になります。

#専任管理者を配置したほうがよいか？

むしろ、1〜数人程度の担当者の中だけで使うことを想定したほうがいいかもしれません。多くの関係者にアクセス権を割り当てても、結局使いこなせずに終わる可能性があると思います。

以上！幸運を祈る。

#リファレンス

RackTables （公式）
http://racktables.org/