LoginSignup
2
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-15

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へのアップグレード
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4