IT資産管理をオープンソースだけでやってみたメモ（OCS Inventory NG + GLPI）


# はじめに
数百台あるサーバやクライアント、タブレット端末等の情報を、Excel台帳で管理することに限界を感じていましたので、試しにオープンソースなソフトウェアに置き換えたらコンピュータの情報も自動収集でき、割と良さげでイイ感じなりました。
ただ、参考にしたサイトの情報が古かったり少なかったりと、まともに動くようになるまでに若干苦労しましたので、私的構築手順を残しておきたいと思います（結構長くなりました…）。
尚、本投稿ではWindowsクライアントを対象とした内容に特化していますが、LinuxやAndroidの情報も収集できます。~~※残念ながら現時点ではMac/iOSは未対応なようです。~~
※MacOSX用のPackagerは[こちら](https://github.com/OCSInventory-NG/Macosx-Packager)で公開されていました。なので現時点ではiOSのみ未対応です。

# 使用ソフトウェア＆バージョン
### インベントリツール（エージェントを利用したインベントリ情報の自動収集）
- OCS Inventory Server 2.3.1
- OCS Inventory Agent 2.1.1.1<br /> 2003/XPの場合、このバージョン以下が対応しているらしい。尚、Vista以上のマシンであれば、投稿時点の最新版（2.3.1）でＯＫ。<br />今回はGPOを介してOCSNGエージェントを自動デプロイしたいので、当バージョンで統一する。<br />対応OS: Unix/Linux、Windows、MacOSX、Android（Google Playにエージェントアプリ有）

### IT資産管理ソフトウェア
- GLPI 9.1.6
- GLPI OCN Inventory NG Plugin 1.3.3

# 構築環境
今回はDocker上のCentOS7コンテナで構築
但し、Database(MariaDB)は別コンテナで構築済

### ホスト(IP:172.16.64.54)
- CentOS7.3
- Docker 17.05 ※環境構築済

### データベース用コンテナ(IP:172.17.0.2)
- CentOS7 + MariaDB5.5 ※環境構築済

### アプリケーション用コンテナ(IP:172.17.0.3)
- CentOS7

# アプリケーション用コンテナの準備
## systemd対応のCentOS7イメージ作成
systemdをコンテナ内で利用するには、予め対応するDockerイメージを作成する必要がある（[参考](https://hub.docker.com/_/centos/)）

```docker:Dockerfile
FROM centos:centos7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
```

DockerfileをビルドしてDockerイメージを作成

```bash
docker build --rm -t local/c7-systemd .
```

Dockerイメージの確認

```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
local/c7-systemd    latest              1b5bdb2a5e29        9 minutes ago       193MB
mariadb55           latest              979d5e884e51        9 days ago          528MB
centos              centos7             36540f359ca3        4 weeks ago         193MB
```

## アプリケーション用コンテナの起動、初期設定
アプリケーション用コンテナを起動

```bash
docker run --privileged --name ocsng -p 80:80 -d local/c7-systemd /usr/sbin/init
```

コンテナの起動確認

```bash
$ docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED              STATUS              PORTS                    NAMES
998d878b1e8e        local/c7-systemd          "/usr/sbin/init"         About a minute ago   Up About a minute   0.0.0.0:80->80/tcp       ocsng
2d66c971124f        mariadb55:latest          "/docker-entrypoin..."   9 days ago           Up 9 days           0.0.0.0:3306->3306/tcp   mariadb
```

コンテナに接続

```bash
docker exec -it ocsng bash
```

**※これ以降のコマンド操作は、アプリケーション用コンテナ内で行う。**

パッケージのアップデート

```bash
yum -y update && yum clean all
```

タイムゾーン変更（UTC => JST）

```bash
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

ロケール変更

```bash
rm -f /etc/rpm/macros.image-language-conf
sed -i '/^override_install_langs=/d' /etc/yum.conf
yum -y reinstall glibc-common && yum clean all

cat  <<EOF >/etc/profile.d/lang.sh
LANG="ja_JP.UTF-8"
LANGUAGE="ja_JP:ja"
LC_ALL="ja_JP.UTF-8"
export LANG LANGUAGE LC_ALL
EOF

source /etc/profile.d/lang.sh
```

# インベントリツールの構築
## OCSNGサーバソフトウェアのインストール
公式リポジトリからサーバ本体をインストール

```
yum -y install epel-release wget
yum -y install https://rpm.ocsinventory-ng.org/enterprise/7/x86_64/ocsinventory-release-7-4.el7.ocs.noarch.rpm
yum -y install ocsinventory-server ocsinventory-reports
yum clean all
```

PHPのタイムゾーン変更

```
sed -i -e "s/^;date.timezone =/date.timezone = Asia\/Tokyo/" /etc/php.ini
```

Apache起動

```
systemctl enable httpd
systemctl start httpd
```

ブラウザから`http://172.16.64.54/ocsreports/install.php`へアクセス

データベース管理者ユーザー＆パスワード、データベース名、MariaDBサーバホスト名を入力して[Send]をクリック
[![ocsng_install_001.png](https://qiita-image-store.s3.amazonaws.com/0/94476/d46d180b-568a-9c94-2c64-4fb5dbc6f717.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/c5e4c599-5d52-ffb9-259e-f0131a92c12a.png)

`OCS-NG Inventory Installation`が表示されていれば、[Click here to enter OCS-NG GUI]をクリック
[![ocsng_install_002.png](https://qiita-image-store.s3.amazonaws.com/0/94476/1a9946a4-9d8d-e1cf-b06c-5d7a8d25d3a3.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/06c2eca8-81cf-f260-2609-3d69675ff1fb.png)

ログインページに遷移するので、一旦ページを閉じる
[![ocsng_install_003.png](https://qiita-image-store.s3.amazonaws.com/0/94476/c6b0ce3e-c39d-79bc-6377-869684577f9b.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/e76a6ac3-2ab4-f091-ca85-34eb1d32b3d5.png)

OCSNGサーバのApache設定情報にあるDBサーバの接続先を変更

```
vi /etc/httpd/conf.d/ocsinventory-server.conf

PerlSetEnv OCS_DB_HOST localhost
↓↓↓
PerlSetEnv OCS_DB_HOST 172.17.0.2
```
**※OCSNG側のDB接続情報は、以下２つのファイルに記載されている**

- /etc/ocsinventory/ocsinventory-reports/dbconfig.inc.php
- /etc/httpd/conf.d/ocsinventory-server.conf


インストール用スクリプトのリネーム

```bash
mv /usr/share/ocsinventory-reports/ocsreports/install.php /usr/share/ocsinventory-reports/ocsreports/install.php.bak
```

プロファイル関連ファイルのダウンロード、配置
※Apacheのエラーログ（/var/log/httpd/error_log）に吐かれる、以下エラーメッセージへの対策
`PHP Warning:  scandir(/usr/share/ocsinventory-reports/ocsreports/config/profiles): failed to open dir: No such file or directory in /usr/share/ocsinventory-reports/ocsreports/require/function_users.php on line 30`

```bash
cd /tmp
wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/archive/2.3.1.tar.gz
tar zxvf 2.3.1.tar.gz
cd OCSInventory-ocsreports-2.3.1
cp -p -r config /usr/share/ocsinventory-reports/ocsreports/
```

Apacheの再起動

```bash
systemctl restart httpd
```

再度ブラウザからOCSNGのログインページ`http://172.16.64.54/ocsreports/`へアクセス

日本の国旗をクリック（日本語インターフェースに切り替わる）
[![ocsng_install_004.png](https://qiita-image-store.s3.amazonaws.com/0/94476/c6ca746e-d55f-82c7-e665-b84aa04de0f6.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/3083c616-91c1-cd7e-8fb2-e2825ccd2733.png)

ユーザー名、パスワード共に`admin`を入力して[送信]をクリック
[![ocsng_install_005.png](https://qiita-image-store.s3.amazonaws.com/0/94476/e6aaa41c-cac6-c52e-598c-8c77d0a0f6f9.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/ff9526d6-6dc7-2a4f-26dd-371eb2dc8f19.png)

OCSNGのダッシュボードが表示される
[![ocsng_install_006.png](https://qiita-image-store.s3.amazonaws.com/0/94476/e4408a4f-c86f-4f9b-c55d-63841599a5b8.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/c79042ca-76a5-3093-dd75-f335ddbcb1fc.png)


## ADグループポリシーにエージェントデプロイ用ポリシー追加

### All-In-Oneインストーラ（OcsPackage.exe）作成
以下3ツールをを任意の場所にダウンロード、展開

- [Windows版OCSエージェントインストーラ](https://github.com/OCSInventory-NG/WindowsAgent/releases)（OCS Inventory Agent 2.1.1.1）
- [OCSパッケージャ](https://github.com/OCSInventory-NG/Packager-for-Windows/releases)（OcsPackager 2.1.1）
- [PsExec](https://technet.microsoft.com/ja-jp/sysinternals/bb897553.aspx)

OCSエージェントインストーラを展開したフォルダ内に、OCSパッケージャ(OcsPackager.exe)、PsExec.exeをコピーする。


![2017-08-03_17h39_46.png](https://qiita-image-store.s3.amazonaws.com/0/94476/b00ccba1-1d6f-042c-0e5b-30a03eef73cc.png)

OcsPackager.exeを起動

各項目を環境に合わせて入力して[Next >]をクリック
![2017-08-03_17h42_50.png](https://qiita-image-store.s3.amazonaws.com/0/94476/da6299cc-4694-768a-9d67-ffd4662ef711.png)

|グループボックス|フィールド|説明|
|:---|:---|:---|
|Files and options|	Exe file|ダウンロードしたOCSNGエージェントセットアップ・プログラム（OCS-NG-Windows-Agent-Setup.exe）を選択する。尚、このフィールドは必須入力。|
| |Certificate file	|	証明書ファイル(cacert.pem)を選択する。今回は指定しない。
| |	Other files	|	インストールフォルダにコピーされる追加のファイルを指定することができる。
|		|	Command line options	|	OCSNGエージェントセットアップ・プログラム（OCS-NG-Windows-Agent-Setup.exe）に渡すオプションを入力する。尚、サイレントインストールは /S オプションを指定する必要がある。<br />オプションの詳しい説明は[このページを参照](http://wiki.ocsinventory-ng.org/index.php?title=Documentation:WindowsAgent#OCS_Inventory_NG_Agent_for_Windows_Setup_command_line_options)
|		|	Label	|	クライアント側でエージェント(OcsInventory.exe)の初回起動時、ユーザーに「TAG」を入力させるポップアッププロンプトを表示させることができるらしいが、具体的な指定方法や使い方は不明。今回は指定しない。
|	Install will run under account	|	User	|	ソフトウェアインストール権限を持つアカウント（通常はローカル管理者アカウントまたはドメイン管理者アカウント）を入力する。ドメイン管理者アカウントの場合、「ドメイン名\ユーザー名」、またはUPN(ユーザー名@ドメイン名)を指定する。
|		|	Password	|	インストール権限アカウントのパスワードを入力する。


All-In-Oneインストーラの出力先フォルダを指定して[OK]をクリック
※OCSエージェントインストーラを展開したフォルダ(OCSNG-Windows-Agent-2.1.1.1)を推奨
![2017-08-03_17h43_45.png](https://qiita-image-store.s3.amazonaws.com/0/94476/9ee5947f-9fd3-902b-a9f1-4818439dc7a3.png)

[Close]をクリック
![2017-08-03_17h44_08.png](https://qiita-image-store.s3.amazonaws.com/0/94476/f508f364-0114-2f75-7ebb-86dd32e36b11.png)

以上でAll-In-Oneインストーラ（OcsPackage.exe）が指定されたフォルダ内に作成される


### OCSNGエージェント自動展開（＆実行）用GPOの追加

Active Directory側で、以下の手順によりグループポリシーを作成（または既存GPOに追加）する。
このグループポリシーにより、Windowsクライアント起動時にエージェントのデプロイ（既にインストールされていれば実行）が自動的に実施される。

グループポリシーマネージャ（gpmc.msc）を起動
[![OCSNG Agent GPO 001](https://qiita-image-store.s3.amazonaws.com/0/94476/1695a09c-2514-4b4c-9cca-8a9ffe726f78.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/23a5847c-d413-898e-cec7-931e7248ffd5.png)

グループポリシーオブジェクトを展開し、空欄を右クリックして[新規(N)]をクリック
[![OCSNG Agent GPO 003](https://qiita-image-store.s3.amazonaws.com/0/94476/1a206c85-7c84-2acb-bbb6-1820137c442c.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f265a6d0-2a4b-7127-a82a-12d4f618c18b.png)

[名前(N)]に`OCSInventory`と入力して[OK]をクリック
[![OCSNG Agent GPO 004](https://qiita-image-store.s3.amazonaws.com/0/94476/68f04805-292e-9beb-574b-986af3162efc.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/765fe46d-b4a6-71bd-8c00-56d471450ac2.png)

作成されたGPO[OCSInventory]を右クリックし、[編集(E)]をクリック
[![OCSNG Agent GPO 006](https://qiita-image-store.s3.amazonaws.com/0/94476/ae594d41-0cf0-7e46-49b0-4888f6eb4599.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/70759e08-7ca2-a0f9-d1ff-53a3c1a99cbc.png)

[コンピュータの構成]>[ポリシー]>[Windowsの設定]>[スクリプト（スタートアップ/シャットダウン）]を展開し、[スタートアップ]をダブルクリック
[![OCSNG Agent GPO 007](https://qiita-image-store.s3.amazonaws.com/0/94476/3941fa56-a1bc-c8c7-c31d-495e54c8ad0e.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/9b764e1e-ec40-d280-a84d-609a0ef55158.png)

[ファイルの表示(S)]をクリック
[![OCSNG Agent GPO 008](https://qiita-image-store.s3.amazonaws.com/0/94476/d5465671-7009-73ca-5b79-f21bf6ffa4e9.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/188d4765-3bc4-82d3-5d43-b473651a5401.png)

エクスプローラが開くので、その中にOCSエージェントインストーラに同梱されているランチャー(OcsLogon.exe)とAll-In-Oneインストーラ（OcsPackage.exe）をコピーし、エクスプローラを閉じる
[![OCSNG Agent GPO 009](https://qiita-image-store.s3.amazonaws.com/0/94476/de4a52a6-f70a-aec9-128f-5d74423cd6b2.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1b9ed9a2-f7bc-77ee-225b-3146aed5d920.png)

[追加(D)]をクリック
[![OCSNG Agent GPO 010](https://qiita-image-store.s3.amazonaws.com/0/94476/276fd838-3c0d-00d0-1fdb-b33baa839efa.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/31678d58-b64c-3393-6f5e-158e869cfe2d.png)

[スクリプト名(N)]にランチャー`OcsLogon.exe`を選択、[スクリプトのパラメーター(P)]にランチャーに渡すパラメータを入力して[OK]をクリック
[![OCSNG Agent GPO 011](https://qiita-image-store.s3.amazonaws.com/0/94476/0214b454-0cec-03db-f45d-f54e0141403b.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/752a1256-fd3b-69c9-f2f7-ccc1d77b5d31.png)

|パラメータ|説明|
|:---|:---|
|/PACKAGER|Al-In-Oneインストーラ（OcsPackage.exe）を利用する場合に指定。指定しなければ通常のOCSエージェントインストーラ（OCS-NG-Windows-Agent-Setup.exe）を利用|
|/GPO|指定した場合、GPOフォルダと呼ばれる`OcsLogon.exe`と同じフォルダからインストーラをダウンロードする。指定しなければOCSNGサーバからダウンロードする。|
|/DEPLOY|エージェントのバージョンを指定|
|/SERVER|OCSNGサーバの接続URLを指定|

[OK]をクリック
[![OCSNG Agent GPO 012](https://qiita-image-store.s3.amazonaws.com/0/94476/9a15acb6-e06c-2933-8cb2-da8aa3bc92cb.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f9ee1139-87b7-9ded-164d-c35a83abe7e6.png)

作成されたGPO`OCSInventory`を、コンピュータが格納されている特定のOUやサイトに適用（リンク）する
[![OCSNG Agent GPO 013](https://qiita-image-store.s3.amazonaws.com/0/94476/4f73aa92-a610-1ba6-da06-8c1b53a1d10e.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/d4569a88-91fb-f11e-eacc-bae2c4d35cf8.png)

## インベントリ情報収集の確認

Windowsクライアントが起動される毎に、OCSNGサーバにインベントリ情報が自動収集される。

コンピュータ一覧
[![OCSNG Inventory List](https://qiita-image-store.s3.amazonaws.com/0/94476/d0de3e74-e85a-903b-89d6-21094d5a3d2d.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/2c817f64-0880-7b81-903d-428a0069a560.png)

コンピュータ別の詳細情報ページ（一覧からコンピュータ名をクリック）
[![OCSNG Inbentory Summary](https://qiita-image-store.s3.amazonaws.com/0/94476/5630168f-be02-2c57-fbdc-d8afcebe6b21.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/38230a07-59c1-c483-28fb-215c6dec3916.png)

尚、OCSNGエージェントログは`%ProgramData%\OCS Inventory NG\Agent\OCSInventory.log`に出力されるので、収集できないクライアントがある場合の原因究明の一助となる。

## Active Directory 連携
OCSNGサーバのLDAP連携機能により、Webコンソールへ Active Directory やLDAPの登録ユーザーでログインすることができる。

`/usr/share/ocsinventory-reports/ocsreports/backend/AUTH/auth.php`をエディタで開き、以下のように変更する。

```
$list_methode = array(0 => "local.php");
↓↓↓↓↓
$list_methode=array(0=>"ldap.php",1=>"local.php");
```

`/usr/share/ocsinventory-reports/ocsreports/backend/identity/identity.php`をエディタで開き、以下のように変更する。

```
$list_methode = array(0 => "local.php");
↓↓↓↓↓
$list_methode=array(0=>"ldap.php",1=>"local.php");
```

念のため、Apacheを再起動

```bash
systemctl restart httpd
```

Webコンソールに管理者（admin）でログインし、[設定]>[設定]をクリック
[![OCSNG AD 001](https://qiita-image-store.s3.amazonaws.com/0/94476/9dfe7b34-2a3e-7b1d-f1c6-8d5e543bd205.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/fdc666b6-3b7c-2a49-eace-986a0525f5f2.png)

サイドメニューの[LDAP configuration]をクリック
[![OCSNG AD 002](https://qiita-image-store.s3.amazonaws.com/0/94476/cf32a4b4-df07-9fe9-f542-b35e1b73a7b0.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1229e6e4-e867-dd11-8a19-b1fae1238e6c.png)

各項目にAD連携に必要な情報を入力し、ページ下部の[アップデート]をクリック
[![OCSNG AD 003](https://qiita-image-store.s3.amazonaws.com/0/94476/be6374f7-e53f-02a1-604a-13e6588482d5.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/4e0c7064-fbcb-bf58-f6c8-e172b2291bde.png)

|設定項目|説明|設定例|
|:---|:---|:---|
|CONEX_LDAP_SERVEUR|ADサーバのIPアドレス or ホスト名|dc1.mydomain.local|
|CONEX_ROOT_DN|ルートDN|CN=Administrator,CN=Users,DC=MYDOMAIN,DC=local|
|CONEX_ROOT_PW|ルートDNのパスワード|P@ssw0rd|
|CONEX_LDAP_PORT|LDAPポート|389|
|CONEX_DN_BASE_LDAP|ベースDN|DC=MYDOMAIN,DC=local|
|CONEX_LOGIN_FIELD|ユーザー認証の属性名|sAMAccountName|
|CONEX_LDAP_PROTOCOL_VERSION|LDAPプロトコルのバージョン|3|
|CONEX_LDAP_CHECK_FIELD1_NAME|フィルタに使用する属性名|memberof|
|CONEX_LDAP_CHECK_FIELD1_VALUE|属性のフィルタ値|CN=Domain Admins,CN=Users,DC=JIM_DOMAIN,DC=local|
|CONEX_LDAP_CHECK_FIELD1_ROLE|フィルタに一致したユーザーの権限|スーパーマネージャー|
|CONEX_LDAP_CHECK_FIELD2_NAME|上記同様|  |
|CONEX_LDAP_CHECK_FIELD2_VALUE|上記同様|  |
|CONEX_LDAP_CHECK_FIELD2_ROLE|上記同様|  |
|CONEX_LDAP_CHECK_DEFAULT_ROLE|ユーザー権限の初期値|  |

ちなみに上記設定例は、MYDOMAINドメインのベースDN配下から`sAMAccountName`属性を含むエントリを検索し、更にそのエントリが`Domain Admins`グループに属していれば、スーパーマネージャ権限でのログインを許可している。


# IT資産管理ソフトウェアの構築

## GLPIのセットアップ

MariaDBサーバ側でデータベース```glpi```と接続ユーザー```glpi```を作成

```
mysql -u root -p
> create database glpi;
> grant all privileges on glpi.* to glpi@localhost identified by 'P@ssw0rd';
> grant all privileges on glpi.* to glpi@'%' identified by 'P@ssw0rd';
> flush privileges;
>quit;
```

PHPオプションパッケージのインストール

```bash
yum -y install php-pecl-zendopcache php-pecl-apcu php-xmlrpc
```

GLPIのディレクトリ下で`.htaccess`が有効となるよう、Apacheに設定追加

```bash
cat <<EOF >/etc/httpd/conf.d/glpi.conf
<Directory "/var/www/html/glpi">
    AllowOverride All
</Directory>
EOF
```

Apacheの再起動

```bash
systemctl restart httpd
```

GLPI本体のダウンロード、展開
※最新パッケージは[ここ](https://github.com/glpi-project/glpi/releases)からダウンロード可能

```bash
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/9.1.6/glpi-9.1.6.tgz
tar zxvf glpi-9.1.6.tgz
mv glpi /var/www/html/
chown -R apache:apache /var/www/html/glpi
```

ブラウザから`http://172.16.64.54/glpi/`にアクセス

表示言語を`日本語`に変更して[OK]をクリック

[![GLPI Install 001](https://qiita-image-store.s3.amazonaws.com/0/94476/70fa33fe-ee33-6653-065d-3aa315b27e4e.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/4374d40d-c96a-4c5a-6d14-93282a1aa9b3.png)

`ライセンスを読みました。これを受諾します`を選択して[続行]をクリック
[![GLPI Install 002](https://qiita-image-store.s3.amazonaws.com/0/94476/005bd158-32a6-f5da-ad58-e5be7ec7e121.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/afd74804-ec99-600e-3da1-e273db58a242.png)

[インストール]をクリック
[![GLPI Install 003](https://qiita-image-store.s3.amazonaws.com/0/94476/a599fc35-4db0-825c-4d73-a3c082487a4e.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f6cfdf23-f1a3-718b-1f2c-ee5287195f1d.png)

全ての検証項目がクリアされていれば[続行]をクリック
[![GLPI Install 004](https://qiita-image-store.s3.amazonaws.com/0/94476/ba3abf2b-49a0-14e1-2856-626aa9c9c27c.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/9dac73fa-55fb-88ad-9243-70ada1d35aa6.png)

MariaDBサーバのIPアドレス、接続ユーザー名、接続パスワードを入力して[続行]をクリック
[![GLPI Install 005](https://qiita-image-store.s3.amazonaws.com/0/94476/ec9a355c-fe5c-b9d9-a702-679a2fea66b8.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/740b8447-329a-3c48-2eea-08a30ca455c4.png)

`glpi`を選択して[続行]をクリック
[![GLPI Install 006](https://qiita-image-store.s3.amazonaws.com/0/94476/c182e63c-feb9-b833-a526-fe6a0765d6b8.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/3f1fdc43-a59c-0686-6291-abd9265e593e.png)

[続行]をクリック
[![GLPI Install 007](https://qiita-image-store.s3.amazonaws.com/0/94476/5df1f334-971c-9371-ca28-14fc32eb99d3.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/859bb5d8-9cab-a949-64cf-857f61808803.png)

[GLPIを使用]をクリック
[![GLPI Install 008](https://qiita-image-store.s3.amazonaws.com/0/94476/770ec877-9ff8-e924-0107-b3c8dc366b6b.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/d68a4782-9ead-42d1-176b-1dea3b3ef3af.png)

ユーザー名とパスワードに`glpi`と入力して[実行]をクリック
[![GLPI Install 009](https://qiita-image-store.s3.amazonaws.com/0/94476/5b43429f-b751-d1d6-eade-0cd658e18482.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/be59c214-4abf-762c-a9cf-17bfa11c09e0.png)

GLPIのダッシュボードが表示される
[![GLPI Install 010](https://qiita-image-store.s3.amazonaws.com/0/94476/e71bc0e0-f1c4-560b-a622-bc5cbe6f5fdd.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/b83de64d-9c40-b3ac-cf47-a6568d0551ca.png)

## 連携プラグインのセットアップ
OCS Inventory NG から情報をインポートできるよう、連携プラグインをセットアップ

連携プラグインのダウンロード、展開

```bash
cd /tmp
wget https://github.com/pluginsGLPI/ocsinventoryng/releases/download/1.3.3/glpi-ocsinventoryng-1.3.3.tar.gz
tar zxvf glpi-ocsinventoryng-1.3.3.tar.gz
mv ocsinventoryng /var/www/html/glpi/plugins/
chown -R apache. /var/www/html/glpi/plugins/ocsinventoryng
```

念のため、Apacheを再起動

```bash
systemctl restart httpd
```

GLPIのWebコンソールにログインし、[セットアップ]>[プラグイン]をクリック
[![ocs_plugin_001_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/ccf783c3-3648-c31e-efcd-e4fee6cfe116.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/34135d2c-a71a-7305-f324-52ee7d8a5607.png)

プラグインのリストに`OCS Inventory NG`が追加されているので、右の[インストール]をクリック
[![ocs_plugin_002_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/be821b84-7b10-d88f-9792-97d4857f8d89.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/b8beb267-f63e-dae4-355c-d4b9d3de002f.png)

[有効にする]をクリック
[![ocs_plugin_003_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/8866df80-e0ae-d889-9a84-a4ffb192762e.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1bbaf02e-5935-69af-91bb-0b0fa410d83b.png)

`OCS Inventory NG`をクリック
[![ocs_plugin_004_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/ef859fef-cd5f-ea24-8325-3d65d4948614.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/37ffd336-edeb-0ca9-15e9-91e7baea2545.png)

`OCSNG Servers`をクリック
[![ocs_plugin_005_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/4f0e02cc-a3c7-1d68-0237-5afc3c2f0f90.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/5b642d58-afe9-2a6e-fa77-b4f374644954.png)

追加（メニューバーにある[＋]マーク）をクリック
[![ocs_plugin_006_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/67282061-0bbf-32b9-6ab6-e1de3a4324e4.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1510e964-9c75-cb32-ef2a-7131704dc6ca.png)

各項目を設定して[追加]をクリック
[![ocs_plugin_007_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/29d1305b-0e65-cbf2-10ac-6a0f209d926a.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/2510bc52-e964-dc8a-b618-0aed75fd59e5.png)

|項目|初期値|設定値|
|:-----------------|:-----------------|:------------|
|Connection type|Database|Database|
|名前|（空欄）|ocs|
|Host|localhost|172.17.0.2<br />(DBサーバIPアドレス)|
|データベース|ocsweb|ocsweb|
|ユーザ|ocsuser|ocs|
|パスワード|（空欄）|ocs|
|Use automatic action <br />for clean old agents & drop<br />from OCSNG software|いいえ|いいえ|
|Use automatic action<br />to check entity<br />assignment rules|いいえ|いいえ|
|Use automatic locks|はい|はい|
|有効|はい|はい|
|Synchronisation method|Standard<br />(allow manual actions)|Expert <br />(Fully automatic,<br />for large configuration)|
|Database in UTF8|はい|はい|
|備考|（空欄）|（空欄）|

接続試験結果が表示される（但し、この時点では`Invarid OCS configuration (TRACE_DELETED must be active)`エラーとなりOCSNGサーバに接続できない状態）
[![ocs_plugin_008_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/1007f10a-d8e5-c774-0f30-921d99e3ff24.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/04c4b35b-79be-6e69-2100-809901a20bb7.png)

OCSNGサーバのWebコンソール(`http://172.16.64.54/ocsreports/`)を開き、上部メニューの[設定]>[設定]をクリック、更にサイドメニューの[サーバー]をクリックして```TRACE_DELETED```を```ON```に変更後、ページ下の[アップデート]をクリック
[![ocs_plugin_009_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/4441000c-51b4-93f0-4a9e-1dbacbbb85f1.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1351b4b2-cb74-9aa8-0110-f1074c9ec1c9.png)

GLPIのWebコンソールに戻りページをリロードし、接続試験が成功したことを確認
[![ocs_plugin_010_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/51dca205-134d-fa23-2e21-ce8eb426369f.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/28b6c52d-b5ce-bd5d-1bc1-1c987310a9db.png)

## OCSNGからインベントリ情報をインポート
[ツール]＞[OCS Inventory NG]をクリック
[![ocs_plugin_011_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/6986f845-f88b-ce3d-1fff-1e80ec769410.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/ac2fe151-107c-3a40-a8cb-f4d558249c4f.png)

[Inventory Import]をクリック
[![ocs_plugin_012_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/41e01d01-a9ed-75dc-3c76-bbabea022766.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/91b37b28-4fc1-868a-77b4-80ace7928566.png)

[新しいコンピュータをインポート]をクリック
[![ocs_plugin_013_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/b73a6caa-85d4-28f5-3329-65f632dafd87.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/d80728e0-0f22-4247-aad6-06c9b0c3e924.png)

OCSNG側に登録されているコンピュータ一覧が、全て選択されている状態で表示されるので[インポート]をクリック
[![ocs_plugin_014_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/95887ade-564e-87fa-e54a-bbfdd7b1991f.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/628445b2-5964-5b9c-7193-0537967699b5.png)

しばらく待つと作業完了ページに自動遷移する
[![ocs_plugin_015_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/50c9181b-169d-4b51-9d87-d82bcbf73c8a.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/310d19c1-5d82-f6c1-a5bf-10b4fc8a8f96.png)

[情報資産]＞[コンピュータ]をクリック
[![ocs_plugin_016_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/b5d4d597-4471-03f8-b9d3-672aa7a1fadf.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f649e513-dde6-0616-9b8f-e8715a5491fb.png)

OCSNGからコンピュータ情報がインポートされていることを確認できる
[![ocs_plugin_017_s.png](https://qiita-image-store.s3.amazonaws.com/0/94476/40eb1281-cb4c-5a14-6a8a-0bb14c3142b1.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/97017e42-5146-a5ef-4759-515ebe22b055.png)

## Active Directory 連携

GLPIもOCSNG同様、Webコンソールへのログイン認証に、Active DirectoryやLDAPサーバと連携させることができる。

### 認証方法にLDAPサーバを追加

GLPIのコンソールに管理者アカウント(glpi)でログインし、[セットアップ]>[認証]をクリック
[![GLPI LDAP 001](https://qiita-image-store.s3.amazonaws.com/0/94476/b9375cd2-f1d8-44e7-f3fb-d0b0a144d7da.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/049bdba9-da4d-473e-09ec-b4b87cdb7671.png)

[LDAPディレクトリ]をクリック
[![GLPI LDAP 002](https://qiita-image-store.s3.amazonaws.com/0/94476/65107394-7ab9-fbe6-669f-1f1d57925fe1.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/dc648487-d915-6437-6ec6-69aacce97f60.png)

メニューバーにある追加（[＋]マーク）をクリック
[![GLPI LDAP 003](https://qiita-image-store.s3.amazonaws.com/0/94476/282da713-a4c7-d5e5-f95a-a2c155c13526.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/9c736b51-f318-7c98-4e24-0aa23fac337e.png)

各項目を適切な設定値を入力して[追加]をクリック
[![GLPI LDAP 004](https://qiita-image-store.s3.amazonaws.com/0/94476/6f656893-76a5-9786-6710-86ee8031c183.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f75cec59-d460-b3db-ff8f-958699162e21.png)

追加後、遷移した画面の右下に「テスト成功」が表示されたことを確認
[![GLPI LDAP 005](https://qiita-image-store.s3.amazonaws.com/0/94476/495b746f-5c54-53fd-faff-6adb28043938.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/021eb74b-ceac-c153-0357-eef2cb377b15.png)

### ADからユーザー情報のインポート

[設定]>[ユーザ]をクリック
[![GLPI LDAP 006](https://qiita-image-store.s3.amazonaws.com/0/94476/28fff9b2-7aac-d125-8d7a-999b71cc5783.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1e1bd54d-d010-7cc8-4093-76cd2f2f22b7.png)

[LDAPディレクトリリンク]をクリック
[![GLPI LDAP 007](https://qiita-image-store.s3.amazonaws.com/0/94476/ed5ebf50-cdc4-655a-edc6-8a80cbd9f2f7.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/1c3d0394-966f-257a-2ad9-397a1fbefaf7.png)

[新しいユーザをインポート]をクリック
[![GLPI LDAP 008](https://qiita-image-store.s3.amazonaws.com/0/94476/0d27fdb3-c20a-acc4-9cc1-8c364201af62.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/f2fea507-19ce-a126-95e4-a274fb56778f.png)

[検索]をクリック
[![GLPI LDAP 009](https://qiita-image-store.s3.amazonaws.com/0/94476/10e2130b-884c-a3ad-1a8c-a88e9c8c1d85.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/12043ce7-fda7-8224-cd5a-647ac01c3d56.png)

①GLPIへインポートするユーザーにチェックマークして、②[操作]をクリック
[![GLPI LDAP 010](https://qiita-image-store.s3.amazonaws.com/0/94476/84f2891f-6ce9-6a46-8545-989b919489a8.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/2cc7063d-b500-4136-320d-04cb6eff754c.png)

[操作]には```インポート```を選択して[実行]をクリック
[![GLPI LDAP 011](https://qiita-image-store.s3.amazonaws.com/0/94476/c15c44ce-da04-51db-84b4-2536d422f3a1.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/8a82d1de-31b2-3c49-2c38-4456ad23fa22.png)

### プロファイルの追加
インポートしたユーザーには、デフォルトで```Self-Service```プロファイル（≒ロール）が割り当てられる。この`Self-Service`はデフォルトで登録されている中で、最も制限されているプロファイルである。そのため管理者に該当するユーザーには、全ての権限をもつ`Super-Admin`プロファイルを、追加で割り当てる必要がある。
ちなみにプロファイルは、ひとりのユーザーに複数を組み合わせて割り当てることが出来る。

①プロファイルを割り当てたいユーザー（今回は管理者ユーザー）にチェックマークして、②[操作]をクリック
[![GLPI LDAP 012](https://qiita-image-store.s3.amazonaws.com/0/94476/d70a05e3-7ec5-88e8-670d-9244522512f5.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/a760ef29-40ab-2913-6b90-8c75b8a7069a.png)

[操作]を`プロファイルへの関連づけ`、すぐ下のドロップダウンを`Super-Admin`、エンティティを`Root entity`に変更して[追加]をクリック
[![GLPI LDAP 013](https://qiita-image-store.s3.amazonaws.com/0/94476/f794bdea-1200-3765-2fa8-f0f17f417716.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/48104184-c4e0-3b58-858b-e2529f2ae90d.png)

`操作は成功しました`が表示されれば完了
[![GLPI LDAP 014](https://qiita-image-store.s3.amazonaws.com/0/94476/bbc406dd-6d28-cdba-f173-300d827cf8bf.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/3bdc8aeb-1209-d7b7-2c05-58852309ddfe.png)

**エンティティ**
マルチテナントや、大規模な組織でグループ会社毎、または複雑な組織で部門毎等、エンティティを分けることでより管理がしやすくなる場合もある。またエンティティは階層構造（ツリー）を持つこともできる。特別な要件や事情が無い限り、デフォルトで登録されている「Root」エンティティのみで管理し、「エンティティ」の代わりに「グループ」を利用したほうが管理が簡単にできると言える。

**プロファイルにおける動的、反復利用**
ユーザーのプロファイル情報にはD（動的）やR（反復利用）といった割り当て方法がある。「動的」とは予め設定されたルールに従って自動的に割り当てられたプロファイルを示し、それらルールは[設定]>[ルール]から確認、作成することができる。「反復利用」は、言い換えれば「再帰的」という意味であり、（エンティティの）階層を辿って割り当てられたことを示している。つまり親エンティティに割り当てられたプロファイルを、子エンティティに所属するユーザーへ引継ぐ、といったことができる。

# Tips
## GLPIのPDF出力で日本語が文字化け
### 現象
GLPIでPDF出力の際、タイトル等の日本語が文字化けする。
[![screencapture-aw01am01-glpi-front-report-dynamic-php-1502327369659.png](https://qiita-image-store.s3.amazonaws.com/0/94476/b0a96844-bd04-3f71-7d41-9b87499e0652.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/091c423b-1a07-1159-6830-758072f1990e.png)

### 対策

[IPAフォント ダウンロードページ](http://ipafont.ipa.go.jp/old/ipafont/download.html)からTTFファイル「IPA Pゴシック(ipagp00303.zip)」をダウンロード

ダウンロードしたTTFファイルを解凍

```bash
cd /tmp
unzip ipagp00303.zip
```

GLPIにIPAフォントを埋め込み型で追加する

```bash
cd ipagp00303
/var/www/html/glpi/vendor/tecnickcom/tcpdf/tools/tcpdf_addfont.php -i ipagp.ttf

>>> Converting fonts for TCPDF:
*** Output dir set to /var/www/html/glpi/vendor/tecnickcom/tcpdf/fonts/
+++ OK   : /tmp/ipagp00303/ipagp.ttf added as ipagp
>>> Process successfully completed!
```

Webコンソールから[セットアップ]>[一般設定]>[デフォルト値]ページを開き、`PDF出力フォント`という項目があるので、デフォルト値の`Helvetica`から`IPAPGothic`に変更し、ページ下部の[保存]をクリック
[![screencapture-aw01am01-glpi-front-config-form-php-1502330246207.png](https://qiita-image-store.s3.amazonaws.com/0/94476/dd8d58aa-eb5c-01bc-3b08-5133f6b27af9.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/3dd56dd7-2c23-7ea4-4aac-42c4e37c4c7e.png)

一旦Webコンソールからログアウトする。

再度Webコンソールにログインし、PDFを出力して文字化けが解消されていれば完了。
[![screencapture-aw01am01-glpi-front-report-dynamic-php-1502330276534.png](https://qiita-image-store.s3.amazonaws.com/0/94476/41779421-bc6a-3109-7cee-811bbad39673.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/5bfd4900-5d81-a8dd-58af-ed53e4af5c28.png)

## OCSNGからGLPIへのインポート（同期）処理を自動化する

[OCSNG連携プラグイン](#連携プラグインのセットアップ)で`Synchronisation method`に`Expert`を設定すると、プラグインに同梱されているスクリプトを使ってインポート処理を定期実行させることができる。

スクリプト`ocsng_fullsync.sh`に実行権限付与

```bash
chmod +x /var/www/html/glpi/plugins/ocsinventoryng/scripts/ocsng_fullsync.sh
```

まずは手動実行してみる

```bash
sudo -u apache /var/www/html/glpi/plugins/ocsinventoryng/scripts/ocsng_fullsync.sh --thread_nbr=2 --server_id=1
```
尚、`thread_nbr`には任意の数字（起動スレッド数）、`server_id`にはOCSNGサーバID（デフォルトではGLPIに登録されたOCSNGサーバに対し、1から連番で付与される）を指定する。

自動実行されるよう、cronに登録（スクリプトを5分おきに実行）

```bash
crontab -u apache -e
```

```text:crontab
*/5 * * * * /var/www/html/glpi/plugins/ocsinventoryng/scripts/ocsng_fullsync.sh --thread_nbr=2 --server_id=1
```

[ツール]>[OCS Inventory NG]から[Scripts execution of automatic actions]を参照することで、自動実行の結果を確認することができる。
[![OCSNG Script Execution](https://qiita-image-store.s3.amazonaws.com/0/94476/7bb90448-bb68-ace9-aed4-c13760d60b49.png)](https://qiita-image-store.s3.amazonaws.com/0/94476/0d6d7652-9150-8d1f-6905-9b1cfd4deaa5.png)

### 参考
https://github.com/pluginsGLPI/ocsinventoryng/wiki/Massive-import---Expert-Mode