Edited at

Docker環境でGLPIを9.2.1から9.3.3へアップグレード

DockerにてGLPIを利用して資産管理を行っています。

実際にGLPIで運用している日本語情報が非常に少ないです。

オフラインの機器を多数管理するような場合に非常に使いやすいと思います。

前回記事の環境からアップグレードします。

※DBのバックアップは前回から変更ありません。

※OCS Inventory NGとの連携は行っていません。


内容


  • 9.2.1から9.3.3へのアップグレード時のデータベースエラー対応

  • CASエラーについて

  • データセンターのラック管理機能を利用する


環境

Docker version 18.09.4

docker-compose version 1.24.0

hostOS:CentOS7-minimal

ベースイメージ

https://github.com/fjudith/docker-glpi

※オリジナルはmariaDBが5.5ですが10.3を使っています。


ディレクトリ構成

/glpi933

├── app

│   ├── Dockerfile

│   ├── datainjection-2.6.4.tar.gz

│   └── php.ini

├── db

│   ├── 2019mmddHHMMSS.sql

│   ├── Dockerfile

│   └── script

│     └── db_backup.sh

├── docker-compose.yml

└── glpi.env

※php.ini, db_backup.sh, glpi.envは前回と同じです。


docker-compose.yml

version: '2'

services:
db:
build: ./db
env_file:
- ./glpi.env
environment:
- "TZ=Japan"
volumes:
- glpi-db93:/var/lib/mysql
- ./db:/docker-entrypoint-initdb.d
- glpi-db-backup93:/backup
ports:
- 32806:3306/tcp
restart: always

app:
build: ./app
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
- "TZ=Japan"
volumes:
- glpi-app93:/var/www/html/
- ./app/php.ini:/usr/local/etc/php/php.ini
links:
- db:mysql
ports:
- 8080:80/tcp
restart: always

volumes:
glpi-db93: {}
glpi-db-backup93: {}
glpi-app93: {}



Dockerfile #app ※前回から変更箇所のみ

バージョン指定

ENV GLPI_VERSION=9.3.3

nanoをvimへ変更

RUN apt-get install --no-install-recommends -yqq \

zlib1g \
cron \
bzip2 \
wget \
vim

プラグインのバージョンアップ

COPY datainjection-2.6.4.tar.gz /var/www/html/plugins/

WORKDIR /var/www/html
RUN tar zxvf plugins/datainjection-2.6.4.tar.gz -C plugins/ && mv plugins/datainjection-2.6.4 plugins/datainjection
RUN rm plugins/remove.txt
EXPOSE 80
CMD apache2-foreground


Dockerfile #db

FROM mariadb:10.3

RUN apt-get update
RUN apt-get install -y vim locales
RUN apt-get install -y language-pack-ja-base language-pack-ja
RUN locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LC_CTYPE ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP.utf8

COPY /script/db_backup.sh /opt/
RUN chmod +x /opt/db_backup.sh
RUN mkdir backup


9.2.1から9.3.3へのアップグレード時のデータベースエラー対応

参考:GLPI 9.3 convert tables to innodb

流れとしては9.2.1から9.3.3へアップグレードしデータベースのマイグレーションを実施します。

9.4系へいきなりアップグレードするとinnodb_migration.phpが存在していないためマイグレーションできません。

1.GLPI9.3.3イメージをビルド

ログイン時には以下のエラーが表示されます。

glpi-error02.jpg

2.GUIでGLPIインストール 

インストールを完了せずにマイグレーションを実行すると下記エラーが発生します。

glpi-error01.jpg

※CASエラーについて

とりあえず無視しても良いようです。

参考:GLPI フォーラム 

glpi-error-01.jpg

3.データベースをマイグレーション

appコンテナへ接続してからスクリプトを実行します。

$ docker exec -it glpi933_app_1 bash

コンテナログイン後


# php scripts/innodb_migration.php

[実行結果]

glpi-success01.jpg

4.起動確認

ブラウザで再度アクセスすると以下のようにエラーが消えています。

glpi-success02.jpg

5.install.phpを削除

ついでにinstall.phpを削除します。

$ docker exec -it glpi933_app_1 bash

コンテナログイン後


# rm /install/install.php

6.データベースをバックアップ

配置済みのスクリプトを実行

$ cd glpi933

$ docker exec glpi933_db_1 ./opt/db_backup.sh

7.バックアップの保存場所

/var/lib/docker/volumes/glpi933_glpi-db-backup/_data/


データセンターのラック管理機能

ラックイメージに情報資産で登録しているサーバを登録できます。

9.3より新たに追加された機能の一つです。

判明している課題:ポジション(ラックの何段目)の前・後・右・左が指定できるのですが登録できる機器は

1段に一つのみとなっています。1段に2つの機器を置いている場合は登録できません。

しばらく運用してみてまた感想書きたいと思います。

rack00.jpg

前・後・右・左を指定しても以下のように表示は1段を専有

rack01.jpg

登録画面では前・後・右・左を指定可能

rack02.jpg


次回試したいこと


  1. Dockerでcron登録

  2. 自動実行機能の利用

  3. GLPI 9.4へのアップグレード