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

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

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

【ラック構成図】

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

【サーバ筐体の詳細】

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

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

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

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

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

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

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

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

bash
/etc/init.d/mysqld start mysql

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

sql
create database dcim; grant all privileges on dcim.* to 'dcim'@'localhost' identified by 'P@ssw0rd';
shell
[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通信時に必要となる鍵ファイルの作成を行う。

bash
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
shell
[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」から始まる行を書き換える。

bash
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の設定を追記する。
サーバ名やドキュメントルートなどについては、自身の環境に合わせてもらいたい。

bash
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」を利用している。

shell
[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

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

bash
touch /var/www/.htpasswd htpasswd /var/www/.htpasswd Administrator
shell
[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ポートを通すようにする。

bash
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』のファイルをダウンロードしてくる。

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

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

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

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

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

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

db.inc.php

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の再起動を行う。

bash
service httpd restart

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

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