Rancher in Docker バージョンアップスクリプト v2


毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

昔、以下の投稿をしてDockerで動かしたRancherをアップグレードするスクリプトを書いたのですが、
Rancher 2.6へバージョンアップするにあたりスクリプトを改修したので再度投稿です。
バージョン2とします。

Rancher 2.0 バージョンアップ - Qiita
https://qiita.com/ynott/items/2a631e907fa1850210fb

以下のページを参考にしました。

Rancher Docs: Upgrading Rancher Installed with Docker
https://rancher.com/docs/rancher/v2.6/en/installation/other-installation-methods/single-node-docker/single-node-upgrades/

1. シェルスクリプト

修正点は、以下の通りです。

  1. 既存RancherコンテナのIDを自動取得に変更
  2. 新しいバージョンのRancherバージョンを自動チェック

UPCOMING_VERSIONのみ指定してください。

upgrade-rancher-v2.sh
#!/bin/bash -xe

export RANCHER_CONTAINER_ID=''
export UPCOMING_VERSION=v2.6.0
export LATEST_VERSION=$(curl -s https://registry.hub.docker.com/v1/repositories/rancher/rancher/tags | jq -r '.[].name' | sort -h | grep -v "-" | tail -1)

# UPCOMING_VERSIONの修正し直し漏れをチェック
if [ "${UPCOMING_VERSION}" == "${LATEST_VERSION}" ]
then
   :
else
   echo "$UPCOMING_VERSION is not match $LATEST_VERSION"
   exit
fi

# 既存RancherコンテナのIDとインストールされているバージョンを取得
RANCHER_CONTAINER_ID=$(sudo docker ps -a --filter name=rancher --format "{{.ID}}")
RANCHER_CURRENT_VERSION_TAG=$(sudo docker ps -a --filter name=rancher --format "{{ .Image }}" | sed -ne 's/rancher\/rancher:\(v.*\)/\1/p')
docker stop $RANCHER_CONTAINER_ID

echo "RANCHER_CURRENT_VERSION_TAG is: $RANCHER_CURRENT_VERSION_TAG"
echo "RANCHER_CONTAINER_ID is: $RANCHER_CONTAINER_ID"

# 既存コンテナからバックアップボリュームコンテナを作成
docker create --volumes-from $RANCHER_CONTAINER_ID \
--name rancher-data rancher/rancher:$RANCHER_CURRENT_VERSION_TAG

# ボリュームコンテナからtarファイルを作成
docker run  --volumes-from rancher-data -v $PWD:/backup \
alpine tar zcvf /backup/rancher-data-backup-$RANCHER_CURRENT_VERSION_TAG.tar.gz /var/lib/rancher

docker pull rancher/rancher:$UPCOMING_VERSION

# ボリュームコンテナを参照しつつ新しいRancherを起動
docker run -d --volumes-from rancher-data \
  --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /host/rancher:/var/lib/rancher \
  -v /var/log/rancher/auditlog:/var/log/auditlog \
  -e AUDIT_LEVEL=1 \
  --privileged \
  rancher/rancher:$UPCOMING_VERSION

2. まとめ

Rancher 2.6は画面が変わりすぎててビックリしました。