openDCIMインプレッション（構成管理編）

拙稿[openDCIMインプレッション（インストール編）](http://qiita.com/n-i-e/items/f4ba15640e58b031d7f6)に引き続き、openDCIMを使いこなして行きたいと思います。

#ラックスペース管理

大まかなところはInfrastructure Managementタブで作成し、左下のドリルダウンツリーを使って段階的に細かい単位へとナビゲートしつつ入力を進めていく感じです。以下の管理単位が用意されています。

|粒度|管理単位の名前|解説・備考|
|:--|:--|:--|
|大まか|Container|国、地域、複数のDCを統括する組織単位など|
||Data Center|データセンター|
||Zone|階、部屋、ケージで区切られた範囲、セキュリティ管理単位など|
||Rows of Cabinets|架列|
||Cabinet|架|
|細かい|U||

基本単位はUです。このUを各種機器 (Device) で埋めていくのが、openDCIMにおける構成管理の基本です。

Uより小さい管理単位、例えばブレードサーバのブレード単位で管理する場合や、小型のONUなんかを棚板上に並べる場合は、ブレードサーバ筐体や棚板をChassisとして登録します。すると、そのChassisを親デバイスとして、その下に子デバイスを配置できるようになります。

19インチラックを使わない機材、例えば架台上に直接搭載する自立型サーバやFDFをどうするかは微妙なところですが、Cabinetのない場所にDeviceは置けませんので、高さ1のCabinetに高さ1のDeviceを収容する形で処理するのがいいでしょう。高さ0にすると、Data Center Cabinet Inventory画面（Uが縦に並んでいる画面）からDeviceを選択できなくなってしまうので、あまりお勧めできません。

[デモサイト](http://opendcim.org/demo/)には、アメリカの地図が出てきたり、フロアレイアウト表が出てきたり、ラック収容表に至ってはサーバ機器の前面・背面のイメージ映像が出てきたりしてかっこいいのですが、ここで使われている画像素材は標準添付されておりませんので、自分で画像を用意してアップロードしなければ使えません。めんどくさいですよね。最初のうちは画像に手を出さないほうがいいかもしれません。

##デバイス

架に搭載するデバイスは、以下の7種類があり、登録できる内容がちょっとずつ違います。

|デバイス名|備考|
|:--|:--|
|Server|ESX Server?という選択肢が現れる|
|Appliance||
|Storage Array||
|Switch||
|Chassis|子デバイスを登録できる|
|Patch Panel|ポートごとに前面 (Front) と背面 (Back) がある|
|Physical Infrastructure||
|CDU|分電盤から受電する、SNMPで電力データを取れる|
|Sensor|SNMPで温湿度を取れる|

デバイステンプレートを作っておくと、テンプレートから選ぶだけで高さ（Uの数）やポート数や消費電力などのパラメータが自動的に選ばれるので、なかなか便利です。画面左のTemplate Managementタブ→Edit Device Templatesと進んで行くと、デバイステンプレートの作成画面に到達します。

##通信線

作業を始める前に、Configuration→Cabling→Media Typesで線種と色を登録しておくのがお勧めです。

さて通信線登録です。Device画面のPhysical Infrastructure→Number of Data Portsを1以上に設定するとポート表が出てきますので、ここに対向ポートと線種を登録していきます。パッチパネル経由でつながった一連の通信線は、ひとつながりのPathと扱われます。Device Portの適当な項目をクリックするとPath全体の接続表が出てきて、なかなか便利です。

ここでちょっと問題なのは、1ポート対1ポートの単純な対向しか登録できないということです。例えば、10GbE等の光ケーブルは往復2本一組で扱います。全部2連SCコネクタなら簡単なのですが、一部で単SCコネクタを採用するFDFというのが使われておりまして、それだと機器側1ポートに対してFDF側2ポートを割り当てる形になってしまい、うまく登録できません。この場合の処理の仕方はちょっと悩むところですが、いずれにしても必ずローカルルールを定めて順守徹底して下さい。

。。。え、バス接続ですか？10BASE-5とか？いやーそこまでは知りません。利用者各自にて根性等を駆使して何とか対処して下さい。

##電源系

電源系は以下の3階層で管理します。

||管理単位の名前|解説・備考|
|:--|:--|:--|
|1次側|Panel|分電盤・CVCF等|
||CDU|架内分電盤・電源タップ|
|2次側|Device|負荷|

1架ごとに1つ以上のCDUを配置するのが大原則です。
各機器の電源は、必ずその架のCDUから取ります。隣の架から横引きして取って来ることはできません。
CDUの1次側は必ずPanelの2次側に接続します。CDU同士を横につなげることはできません。
ちょっと融通が利かない仕様のような気がします。

Panelについては、あるPanelの1次側を別のPanelの2次側に接続できますので、これを利用してデータセンター全体のCVCF等をPanelとして登録することもできます。

ところで、Panelを２つ用意して、お互いに自分の1次側を相手の2次側につなぎ込むと、レポーティング機能が誤動作します。分電盤同士、1次側と2次側の位置関係を正しく把握するのはユーザーの責任のようです。

#Bulk Operation

Excelファイルをアップロードすることで行う一括入力です。openDCIM-4.3では、デバイスの追加、通信線の追加、デバイスの移動・削除が可能です。架や電源線の操作はできません。

Excelファイルのフォーマット（列の定義）は[公式Wiki](http://wiki.opendcim.org/wiki/index.php/BulkOperations)を参照して下さい。LibreOffice Calcのodsファイルも使えます。

使いこなすのに、かなりの練習が必要な機能という印象です。試しにデバイス追加してみたところ、デバイステンプレートに登録のあるデバイスでもHeightが空欄だと高さ0と扱われました。うっかり大量の誤ったデータをアップロードしてしまうと、リポジトリ全体が間違ったデータだらけになって収拾がつかなくなってしまいます。

##画像管理

Container単位で用意する地図、Data Center単位で用意するフロアマップと、Device Templateごとに用意する前面・背面の画像を管理します。地図とフロアマップにサイズ指定はありませんが、デバイス画像は横220ピクセル、縦21ピクセル×U数です。

かなり多数の画像をアップロードすることになりますので、ファイル名ルール等は事前に決めておきましょう。地図とフロアマップはdrawingsフォルダ、デバイス画像はpicturesフォルダに配置します。

Data Centerごとにフロアマップ画像１枚が割り当てられるのですが、その下位単位であるZone, CabinetはData Centerのフロアマップ上の座標で指定するのです。この座標の入力がかなりの手間で、対象アイテムの数が多いと、人手でちまちま入力する手間がかなり大変です。また、高層のデータセンターの場合は全部のフロアを１枚の画像に詰め込むので、かなり巨大な画像になって収まりが悪くなります。このあたりは上手く工夫してやって下さい。

##テンプレートリポジトリ

PerlのCPAN、RubyのRubyGems、JavaのMaven Central Repositoryみたいなものを狙ったのか、openDCIM 4.0以降で利用可能な[Template Repository](https://repository.opendcim.org)というのがあります。コンテンツの充実度としては、うーん、まあ何というか、頑張って下さいというところでしょうか。消費電力、重量等の数値は間違っていることがあり、あまり信頼できません。

#考察

##リビジョン管理がない！

図面管理システムには、ISO9000対応とかそういった名目で、Gitみたいなリビジョン管理機能がついているのが普通です。しかしopenDCIMにそんなものはありません。「元に戻す」ボタンもなく、Updateボタンを押せばマスターがいきなり書き変わります。

特に[Bulk Operation](http://wiki.opendcim.org/wiki/index.php/BulkOperations)は危険で、取り消しが効きませんので、何らかの間違いで誤ったデータを大量に取り込んでしまった場合にリカバリーの手段がありません。

この点は非常に不満です。理屈としては、fac_GenericLogテーブルに更新記録が残っていますので、このデータを頼りに書き戻して行くことは理論としては可能かもしれませんが、ツールの支援もなく（または、ツールを自作してでも）それをやるかというと、ちょっと非現実的という気がします。こんな時のためにmysqldumpバックアップを使うのも何か違う気がします。

#Q&A

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

それがいいと思います。関係者分のアカウントを作るだけ作って放置すると、まず間違いなく形骸化して使いものにならなくなります。社内SNSやWikiと違って、なんとなく自然発生的に秩序が出来上がっていくとか、以心伝心で何とかなる世界ではありません。新任ユーザーには研修も必要でしょう。片手間では回りませんよね。

##データセンター以外の物件をopenDCIMで管理できるか。

オフィスフロアに置いてあるような、アクセス系スイッチなんかを収容する19インチラックは管理できると思いますが、個人デスクのPCを管理するのは無理があります。基本的にラックマウントするものしか管理できないとご理解ください。

##架の奥行きというパラメータはないのか。

これが残念なことに、ないのです。
19インチラックは奥行きが標準化されておりませんので、長いサーバが奥行きの浅い架に入らない事案がたまに発生します。ここを見誤って現場でずっこける事態を防ぐために架の奥行きを管理したいところですが、残念ながら、大きさを表すパラメータはopenDCIM全体を通じて高さ (U) のみで、奥行きはありません。

以上！幸運を祈る。

#参考文献

openDCIM WIKI （公式）
http://wiki.opendcim.org/wiki/index.php/Main_Page

不肖私 (2016)
openDCIMインプレッション（インストール編）
http://qiita.com/n-i-e/items/f4ba15640e58b031d7f6