社内でgoogleフォームを利用し、ヘルプデスクの対応履歴を管理していましたが、チームメンバーが増えそろそろ限界を感じています。GLPIのユーザーサポート機能を簡易チケッティングシステムに利用できないか検討中です。
そのためにチケット作成時にメール通知する機能は最低必要ということでGLPIの「自動実行」という機能を活用した備忘録です。
GLPIの自動実行機能はチケット登録時にメールを送信したり、古いログの削除などを自動化します。
crontabでセットする必要があるようです。
そのためDockerfileにcron設定部分を追記します。
前回記事をベースに編集していきます。
Dockerの1コンテナ・1プロセスの考え方に反しているようですが以下の記事が見つかりましたので気にしないことにします。
勘違い: Dockerコンテナ1つごとに1プロセスだけ持たせればよい
環境
ベースの環境は前回記事となります。
Docker version 18.09.4
docker-compose version 1.24.0
hostOS:CentOS7-minimal
GLPI9.3.3
コンテナベースイメージ
https://github.com/fjudith/docker-glpi
※オリジナルはmariaDBが5.5ですが10.3を使っています。
内容
-
DockerのコンテナでCronをセット
参考:docker-composeのコンテナ内でcronを動かす -
自動実行でチケット登録時にメールを送信する
参考:公式フォーラム Automatic action - queuednotification -
メールをチケットに自動登録する
1.DockerのコンテナでCronをインストール・セットする ※追記内容のみ
1.Dockerfileにcronのインストールを追記
RUN apt-get install --no-install-recommends -yqq \
zlib1g \
cron \
bzip2 \
wget \
vim \
cron
2.cronにcrontab.bakの内容をセット
RUN crontab /opt/crontab.bak
3.コンテナ起動時にcronを起動
CMD cron && apache2-foreground
セットする内容
- チケット作成時のメール送信(queuednotification)
- メール受信(mailgate)
- テンポラリファイルのクリーニング(temp)
- 古いログの消去(logs)
- 期限切れセッションの消去(session)
# every 1 min
*/1 * * * * /usr/local/bin/php /var/www/html/front/cron.php --force mailgate &>/dev/null
*/1 * * * * /usr/local/bin/php /var/www/html/front/cron.php --force queuednotification &>/dev/null
# every 3 hours
5 */3 * * * /usr/local/bin/php /var/www/html/front/cron.php --force temp &>/dev/null
# daily
8 0 * * * /usr/local/bin/php /var/www/html/front/cron.php --force logs &>/dev/null
15 0 * * * /usr/local/bin/php /var/www/html/front/cron.php --force session &>/dev/null
## for testing
# */1 * * * * /usr/local/bin/php /var/www/html/front/cron.php --force mailgate; echo " $(date) cron started" >>/var/log/cron/cron.log 2>&1
2.自動実行でチケット登録時にメールを送信
3.管理メールアドレス宛にメールを送信するとチケットを自動作成
自動実行の[mailgate]を利用してメールをチケット登録します。
メールの送信者はユーザー登録されている必要があります。
メールアドレスが登録されていないとメールを受信してもチケットには登録されません。
Googleフォームでフォームを作成し、必要項目を網羅した状態でチケット作成するようにしています。
現在は項目名:詳細に記載内容がすべて格納されます。GASでハンドリングすることで各項目へを動的割り当てできないかと考えています。(後述課題)
課題
- 通知メールに返信することでチケットを更新したい
- チケット作成時に各項目にデータを自動入力したい(例)緊急度を高でチケット作成など
- チケット作成・更新時の通知宛先を内容によって変えたい
上記のような課題がありますが最低限の機能は実装できましたので、運用してみてその感想を今後書いていきたいと思います。