OCS Inventory-NG2.9をCentOS7へインストール

# 本記事について
インベントリ情報収集を効率的にできないかなーとツールを探していたときに、
インベントリ収集として必要な情報はある程度取れそう。
収集した情報をAPIで情報を取得できる。
他の管理ツールとの連携が可能。
となかなか使い勝手が良さそうだったため、使って検証してみようと思い、実際にCentOS7へのOCS inventory-NGをインストールしてみてやり方をまとめました。
なお、基本的なインストール方法について以下のWikiを参考に実施しています。
https://github.com/OCSInventory-NG/Wiki

# OCS Inventory-NGとは
IT資産管理を目的として、サーバやデバイスのインベントリ情報を収集するOSS。
収集の方式としては対象となる機器にAgentをインストールしておこなうものであり、Windows/Linux/Unix等といったマルチプラットフォームで利用できる。
また、エージェントがインストールできない機器についてもSNMPによるスキャンが有効となっているため、大抵の機器は対応可能と思われる。
エージェントを収集対象へインストールしてAgentがXML形式でサーバへ送る。サーバ⇔エージェント間の通信はHttp/Httpsを利用する。
収集した情報について、GLPIやOTRSなどのツールのとの連携も可能。

# 検証環境
SELinux、firewalldは事前に無効化済み。
※今回は検証のため、セキュリティに関する設定については考慮外とする。

| |バージョン|
|:---:|:---:|
|CentOS|7|
|ApacheHttpd|2.4.6|
|php|5.6|
|MariaDB|10.5.9|
|OCS Inventory-NG|2.9|


# 必要パッケージのインストール
OCSInventoryの動作に必要なパッケージをインストールする。

```
yum install httpd epel-release
yum install perl-XML-Simple perl-Compress-Zlib perl-DBI perl-DBD-MySQL perl-Net-IP perl-SOAP-Lite perl-Archive-Zip perl-Mojolicious perl-Plack perl-XML-Entities perl-Switch perl-Apache-DBI
```

# MariaDBのインストール/初期設定
MySQL or MariaDB version 4.1.0 or higher with InnoDB engine active. Mysql version upper than 5.5 are not supported but may work.
※動作要件にMariaDB4.1以上であれば良いと記載があるので、最新版のMariaDBを使用する。

また、今回の用途は検証であるため`mysql_secure_installation`については実施しない。

#### レポジトリのインストール
```
# curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
```
#### MariaDBのインストール
```
# yum install MariaDB-server MariaDB-client
```
#### 初期設定
・MariaDBの起動及び自動起動を設定

```
# systemctl enable mariadb
# systemctl start mariadb
```
・rootユーザのパスワード設定

```
# mysql -u root
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
```
 ※`password`の部分にrootユーザのパスワードを記載する。

・OCSInventory用DBセットアップ

```
MariaDB [(none)]> CREATE DATABASE ocsweb;
```

・OCSInventory用DBユーザ作成

```
MariaDB [(none)]> CREATE USER 'ocs'@'localhost' IDENTIFIED BY 'ocs';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ocsweb.* TO 'ocs'@'localhost' WITH GRANT OPTION;
```

・設定反映

```
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
```

# PHP5.6のインストール

```
# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php56 php php-mbstring php-gd php-mysql php-soap php-xml
# php -v
PHP 5.6.40 (cli) (built: Apr 28 2021 13:55:10) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```


# OCS Inventoryのインストール
以下のURLにある`OCSNG_UNIX_SERVER-2.9.tar.gz`をダウンロードしてサーバへ配置する。
※/root直下で作業することとする。
https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases

```
# cd ~
# tar xvzf OCSNG_UNIX_SERVER-2.9.tar.gz
# cd OCSNG_UNIX_SERVER-2.9
```
インストール用のスクリプト`setup.sh`があるためそれを実行する。

```
# ./setup.sh
```

`setup.sh`を実行すると、ApacheやMariaDB等といったOCSInventoryを動作するためのパッケージが入っているかのチェック及び、設定のデプロイについて聞かれる。
基本的にはデフォルト設定で問題ないと思われる。（`y`もしくは何も入力せず`Enter`でOK）

インストールが終わると、以下のメッセージが表示される。

```
Setup has created a log file /root/OCSNG_UNIX_SERVER-2.9/ocs_server_setup.log. Please, save this file.
If you encounter error while running OCS Inventory NG Management server,
we can ask you to show us its content !

DON'T FORGET TO RESTART APACHE DAEMON !

Enjoy OCS Inventory NG ;-)
```

メッセージにもある通り、忘れずにApacheを再起動しておく。

```
systemctl restart httpd
```

## サービス自動起動設定
各サービスが自動起動するように設定しておく。

```
systemctl enable httpd
systemctl enable mariadb
```

## その他設定
・/var/lib/ocsinventory-reportsに書き込み可となってないとエラーとなったため、事前に付与しておく。

```
# ls -ld /var/lib/ocsinventory-reports
drwxr-xr-x. 8 root root 87 May  2 23:30 /var/lib/ocsinventory-reports
# chmod 777 /var/lib/ocsinventory-reports
# ls -ld /var/lib/ocsinventory-reports
drwxrwxrwx. 8 root root 87 May  2 23:30 /var/lib/ocsinventory-reports
```



# 初期設定
ブラウザから`http://[Server_IP]/ocsreports/`へアクセスする。
データベース、テーブル、インデックスなどを作成できるユーザーを使用してMySQLデータベースサーバーに接続するための情報を入力する。
事前に設定しておいた各パラメータを入力して、Sendボタンを押下する。

||設定値|
|:---:|:---:|
|MySQL login|root|
|MySQL password|password|
|Name of Database|ocsweb|
|MySQL HostName|localhost|

※画像の**WARNING**については`php-xml`がインストールされており、`/var/lib/ocsinventory-reports`に書き込み可になっていれば表示されません。
![setup1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616244/4f2fa5ea-8b20-4d31-4016-dc54952847f6.png)
`Click here to enter OSC-NG GUI`を押下する。
![setup2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616244/ac0eea38-bfd5-4aeb-b488-ca86839a5cb1.png)
ログイン画面が表示される。言語設定で日本語を選択肢し、デフォルトユーザ情報(ユーザ名：admin、パスワード：admin)を入力してログインする。
![setup5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616244/806c3c73-54b6-7ad5-a43b-b8b19c186b13.png)
ログイン完了。セキュリティ警告が出ているが後述にて警告を解除する方法を記載する。
![setup6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616244/844fd048-8384-b853-5afd-a3aea3ab482c.png)


## セキュリティ警告メッセージについての設定変更
OCS Inventoryへログイン後、表示されている警告メッセージに対処するための設定を変更する。
####install.phpを削除する。

```
# rm /usr/share/ocsinventory-reports/ocsreports/install.php
```

#### DBアクセスユーザの変更
OCS Inventory公式としては、インストール時に作成したユーザ`ocs`は実際に利用する際には、使用せずに別に新しいユーザの使用を推奨するとのこと。
そのためここでは、新しくDB接続用に`user`というユーザを作成して、DB接続設定の変更を実施する。
※セキュリティを考慮するなら、`ocs`は権限削除や、アカウント自体を削除したほうが良いかもしれない。

・ユーザ作成

```
# mysql -u root
MariaDB [ocsweb]> select user,host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| mariadb.sys | localhost |
| mysql       | localhost |
| ocs         | localhost |
| ocsuser     | localhost |
| root        | localhost |
+-------------+-----------+
5 rows in set (0.001 sec)

MariaDB [(none)]> use ocsweb;
MariaDB [ocsweb]> CREATE USER 'user'@'localhost' identified by 'password';
MariaDB [ocsweb]> GRANT ALL PRIVILEGES ON `ocsweb` .* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB [ocsweb]> select user,host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| mariadb.sys | localhost |
| mysql       | localhost |
| ocs         | localhost |
| root        | localhost |
| user        | localhost |
+-------------+-----------+
5 rows in set (0.001 sec)

```


・/usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.phpの修正


```
※修正前
define("COMPTE_BASE","user");
define("PSWD_BASE","password");

※修正後
define("COMPTE_BASE","user");
define("PSWD_BASE","password");
```


・/etc/httpd/conf.d/z-ocsinventory-server.confの修正

```
※修正前
  # User allowed to connect to database
  PerlSetEnv OCS_DB_USER ocs
  # Password for user
  PerlSetVar OCS_DB_PWD ocs


※修正後
  # User allowed to connect to database
  PerlSetEnv OCS_DB_USER user
  # Password for user
  PerlSetVar OCS_DB_PWD password
```


・httpd再起動

```
systemctl restart httpd
```

# Agentのインストール
[CentOS7へOCSInventory-agentをインストール](https://qiita.com/stella948/items/10f16709002544c5cf14)
# 関連記事
[OCS Inventory-NG 2.9のインストール時エラーまとめ](https://qiita.com/stella948/items/36c4ce0c1e2c05ab255c)