【Mattermost】運用効率化のためにアップデート自動化スクリプトを作ってみた

広告

はじめに

研究室のMattermostの運用担当なのですが、ネイティブ環境で構築してしまったためにアップデートが自動で走らず手動でファイルを上書きしないといけないのが億劫

頻繁にアップデートが入るので、スクリプトでファイルの置き換えを自動化してみようという試みです

スクリプト

ChatGPTの出力を参考に修正して作りました

インストール先(MM_DIR),バックアップ先(MM_BACKUP_DIR),mattermostサービスの所有ユーザー(MM_USER)を設定するだけで動きます

最新バージョンのダウンロードとインストール、設定の引継ぎを自動でやってくれます

研究室でこのスクリプトをcrontabで定期的に実行してアップデートの自動化をしています

Bash
#!/bin/bash

set -e

# 設定
MM_DIR="/opt/mattermost"
MM_BACKUP_DIR="/opt/mattermost_backup_$(date +%F_%T)"
MM_TMP_DIR="/tmp/mattermost_upgrade"
MM_USER="mattermost"
DOWNLOAD_PAGE="https://releases.mattermost.com/"

# 最新バージョンを取得
echo "[1/6] 最新バージョンを取得中..."
LATEST_TAG=$(curl -sL  https://api.github.com/repositories/37448451/releases/latest | grep tag_name | cut -d '"' -f4)
LATEST_VERSION=${LATEST_TAG#v}  # vを除去
DOWNLOAD_URL="https://releases.mattermost.com/${LATEST_VERSION}/mattermost-${LATEST_VERSION}-linux-amd64.tar.gz"

echo " → 最新バージョン: ${LATEST_VERSION}"

# サービス停止
echo "[2/6] サービスを停止します..."
sudo systemctl stop mattermost

# バックアップ
echo "[3/6] 現在の Mattermost をバックアップ: $MM_BACKUP_DIR"
sudo cp -a "$MM_DIR" "$MM_BACKUP_DIR"

# ダウンロード&展開
echo "[4/6] 新バージョンをダウンロード・展開します..."
mkdir -p "$MM_TMP_DIR"
cd "$MM_TMP_DIR"
curl -LO "$DOWNLOAD_URL"
tar -xzf "mattermost-${LATEST_VERSION}-linux-amd64.tar.gz"

# データ・設定を引き継ぐ
echo "[5/6] 設定とデータをマージします..."
sudo cp -a "$MM_DIR/config/config.json" "mattermost/config/"
sudo cp -a "$MM_DIR/data" "mattermost/"

# 元のディレクトリへ上書きコピー
sudo cp -a mattermost/* "$MM_DIR/"

# 所有者を再設定
sudo chown -R "$MM_USER":"$MM_USER" "$MM_DIR"

# サービス起動
echo "[6/6] サービスを起動します..."
sudo systemctl start mattermost

# バージョン確認
"$MM_DIR"/bin/mattermost version

echo "✅ アップグレード完了: Mattermost ${LATEST_VERSION}"

終わりに

運用って基本的にはめんどくさいのでAIなどのサービスを使ってどんどん自動化していきたいです

広告