オープンソースのデータセンター管理ツール『openDCIM』をインストールしてみた

仕事でデータセンターのラック構成図とか書くのだが、これがまたExcelなのである…
この時代、もうちょっと先進的なものが欲しいなぁ、と思ったりするわけで、色々とアンテナを張って見つけたのが、この『openDCIM』だ。
オープンソースのデータセンター管理ツールだとのこと。まさに先ほど書いていた、Excelで書いているラック構成図を無くすために作られたツールらしい。

こちらにデモがある。ID/パスワードは共に『dcim』となっている。
とりえず、ラック構成図の辺りをいじってみた。

【ラック構成図】

ラック構成図を作成し、そのサーバの前面・背面イメージを貼り付ける事で現地でどのようなサーバが入っているのかが分かりやすくなっている。
サーバ筐体をクリックすると、その筐体の詳細情報が編集出来る。ラックは「Cabinet」になる。

【サーバ筐体の詳細】

それぞれの筐体についての詳細。
NICの接続先を記述する事もできる。

「サーバルーム内のどの辺にこのラックがある」といった地図も作成出来るようだ。
他にも色々と設定できるようで、こちらにスクリーンショットがある。

早速、インストールして実際に動作させてみることにした。
インストールはCentOS 6に対し行っている。CentOS 6に設定されているIPアドレスは192.168.0.185としている。

1.前提となるパッケージのインストール・設定

まずは、前提となるパッケージのインストール・設定を行う。
以下のコマンドを実行する。

yum install httpd php mysql mysql-server php-mbstring php-mysql mod_ssl

1-1.openDCIMで利用するデータベースを作成する

前提となるパッケージのインストール後、mysqlで利用するデータベースを作成する。
まずは、以下のコマンドでmysqlのコンソールに接続する。

/etc/init.d/mysqld start
mysql

次に、mysqlのコンソール内で以下のSQLを実行し、openDCIM用のデータベース、ユーザを作成する。
設定しているパスワード「P@ssw0rd」は、自身の環境に置き換えてもらいたい。

create database dcim;
grant all privileges on dcim.* to 'dcim'@'localhost' identified by 'P@ssw0rd';
[root@cent-zabbix ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>  create database dcim;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on dcim.* to 'dcim'@'localhost' identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.00 sec)

1-2.SSLで用いる鍵ファイルの作成

openDCIMではSSL通信が必要になる。
このため、以下のコマンドでSSL通信時に必要となる鍵ファイルの作成を行う。

cd /root
openssl genrsa -out ca.key 1024
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
cp ca.crt /etc/pki/tls/certs
cp ca.key /etc/pki/tls/private/ca.key
cp ca.csr /etc/pki/tls/private/ca.csr
[root@cent-zabbix ~]# cd /root
[root@cent-zabbix ~]# openssl genrsa -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
.....++++++
....++++++
e is 65537 (0x10001)
[root@cent-zabbix ~]# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@cent-zabbix ~]# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Signature ok
subject=/C=JP/L=Default City/O=Default Company Ltd
Getting Private key
[root@cent-zabbix ~]# cp ca.crt /etc/pki/tls/certs
[root@cent-zabbix ~]# cp ca.key /etc/pki/tls/private/ca.key
[root@cent-zabbix ~]# cp ca.csr /etc/pki/tls/private/ca.csr

 1-3.Apacheの設定

次に、Apacheの設定ファイルを編集する。
まずssl.confに対して以下にコマンドを実行し、「SSLCertificateFile」及び「SSLCertificateKeyFile」から始まる行を書き換える。

sed -i -e '/^SSLCertificateFile/cSSLCertificateFile /etc/pki/tls/certs/ca.crt' \
       -e '/^SSLCertificateKeyFile/cSSLCertificateKeyFile /etc/pki/tls/private/ca.key' \
       /etc/httpd/conf.d/ssl.conf

続いて、httpd.confに対し「ServerName」及び「NameVirtualHost」の設定値を書き換え、NameVirtualHostの設定を追記する。
サーバ名やドキュメントルートなどについては、自身の環境に合わせてもらいたい。

sed -i -e '/^#ServerName/aServerName Apacheで設定するサーバ名(ドメイン名・ホスト名・IPアドレス等)' \
       -e '/^#NameVirtualHost/aNameVirtualHost *:443' \
       /etc/httpd/conf/httpd.conf
cat << EOF >> /etc/httpd/conf/httpd.conf
<VirtualHost *:443>
     DocumentRoot ドキュメントルート
     ServerName Apacheで設定するサーバ名(ドメイン名・ホスト名・IPアドレス等)
     SSLEngine on
     SSLCertificateFile /etc/pki/tls/certs/ca.crt
     SSLCertificateKeyFile /etc/pki/tls/private/ca.key
     <Directory ドキュメントルート>
         AuthType Basic
         AuthName "openDCIM"   
         AuthUserFile /var/www/.htpasswd
         Require valid-user
     </Directory>
</VirtualHost>
EOF

実際に環境で実行したコマンドはこちら。
サーバ名はIPアドレスをそのまま使用し、ドキュメントルートは「/var/www/opendcim」を利用している。

[root@cent-zabbix ~]# sed -i -e '/^#ServerName/aServerName 192.168.0.185:443' \
       -e '/^#NameVirtualHost/aNameVirtualHost *:443' \
       /etc/httpd/conf/httpd.conf
[root@cent-zabbix ~]# cat << EOF >> /etc/httpd/conf/httpd.conf
<VirtualHost *:443>
     DocumentRoot /var/www/opendcim
     ServerName 192.168.0.185
     SSLEngine on
     SSLCertificateFile /etc/pki/tls/certs/ca.crt
     SSLCertificateKeyFile /etc/pki/tls/private/ca.key
     <Directory /var/www/opendcim>
         AuthType Basic
         AuthName "openDCIM"
         AuthUserFile /var/www/.htpasswd
         Require valid-user
     </Directory>
</VirtualHost>
EOF

次に、ベーシック認証で利用しているパスワードの設定を行う。

touch /var/www/.htpasswd
htpasswd /var/www/.htpasswd Administrator
[root@cent-zabbix ~]# touch /var/www/.htpasswd
[root@cent-zabbix ~]# htpasswd /var/www/.htpasswd Administrator
New password:
Re-type new password:
Adding password for user Administrator

あくまでも、Apacheのインストール直後の状態から『openDCIM』を使える状態にするための設定なので、細かく設定したい場合は環境に合わせて設定ファイルを編集してもらいたい。
なお、iptablesを稼働させている環境の場合、以下のコマンドでiptablesで443ポートを通すようにする。

echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT" >> /etc/sysconfing/iptables
service iptables restart

2.『openDCIM』のインストール

さて、前提となるパッケージのインストール・設定が完了したら、『openDCIM』をインストールしよう。
まずは、以下のコマンドで『openDCIM』のファイルをダウンロードしてくる。

cd /var/www
wget http://www.opendcim.org/packages/openDCIM-3.2.tar.gz

ダウンロードしたファイルを解凍し、出来上がったフォルダをリネームする。
アーカイブファイルは不要であれば削除する。これで、ドキュメントルート「/var/www/opendcim」にインストールが完了した。

tar xzvf openDCIM-3.2.tar.gz
mv openDCIM-3.2.1 opendcim
rm openDCIM-3.2.tar.gz

次に、『openDCIM』からMySQLにアクセスするための設定を記述する。
まずは、データベースとの接続に関する設定ファイルをテンプレートファイルからコピーする。

cd /var/www/opendcim
cp db.inc.php-dist db.inc.php

テンプレートからコピーして作成したdb.inc.phpファイルで、データベースへの接続情報を記述する。

db.inc.php

<?php

        $dbhost = 'localhost';
        $dbname = 'dcim';
        $dbuser = 'dcim';
        $dbpass = 'P@ssw0rd';

        $locale = "en_US";
        $codeset = "UTF-8";

        try {
                        $pdoconnect = sprintf( "mysql:host=%s;dbname=%s", $dbhost, $dbname );
                        $dbh = new PDO( $pdoconnect, $dbuser, $dbpass );
        } catch ( PDOException $e ) {
                        printf( "Error!  %s\n", $e->getMessage() );
                        die();
        }

        require_once( 'config.inc.php');
        $config=new Config();

?>

これで、『openDCIM』を利用するための設定が完了した。
設定を反映するため、httpdの再起動を行う。

service httpd restart

後は、ブラウザから192.168.0.185に接続する。
接続時にベーシック認証のユーザ名とパスワードを要求されるので、1-3で設定したユーザ名とパスワードでログインする。

ログインすると初期設定画面が表示されるので、後は適当に設定を行っていけばいい。
次回以降、ちょっと設定をいじってみようと思う。