LoginSignup
3
3

More than 3 years have passed since last update.

bin/upgradeで管理しているRedashインスタンスをv8.0.0に無理やり上げる

Last updated at Posted at 2020-03-10

あらすじ

RedashはV8からDockerによるデプロイのみをアップグレード対象とするようになりbin/upgradeコマンドによる昔ながらのアップグレードができなくなりました。
なのでこのタイミングでモダンなデプロイ方法に式年遷宮すれば良いんですが、そうは問屋がおろしてくれない人向けに、bin/upgrade 相当のことを自前でやる方法を紹介します。

ご利用は自己責任で計画的に!!!

方法の概要

bin/upgradeコードを読んで同じことを自前でやるだけです

  • 新バージョンのソースを固めたtarballを取ってくる
    • V8からはこのtarballが提供されなくなったのでbin/upgradeが動かなくなっています
    • このtarballにはRedashのコードとビルド済のアセットが含まれてます
  • 新バージョンのソースでpip install -r requirements.txtを実施
  • 新バージョンのソースでbin/run ./manage.py db upgradeを実施
  • $REDASH_HOME/currentのシンボリックリンクを新バージョンに差し替え
  • supervisorctlでRedashのプロセスを再起動

この手順を順次やってく感じです。

アップグレード手順

dockerイメージからアセットを取り出してRedashインスタンスに配置する

以下のコマンドを実行してV8のRedashのdockerイメージからアセットを取り出します

docker run -it -v /tmp/work:/tmp/work -w /app/client docker.io/redash/redash:8.0.0.b30340 /bin/bash -c "tar cvfz dist.tar.gz dist ; mv dist.tar.gz /tmp/work/dist.tar.gz"

アップグレードするRedashインスタンスにdockerが入ってればコレをインスタンス上で直で実行しましょう。なければローカルで実行してSCPか何かで/tmp/work/dist.tar.gzを転送しておきましょう。

以後はRedashインスタンス上に/tmp/work/dist.tar.gzが置いてある前提で進めます。

Redashインスタンスでアップグレードを実行

Redashインスタンスにログインしてrootになって以下を実行していきます

ますはRedashを止めます

/etc/init.d/redash_supervisord stop
/etc/init.d/redash_supervisord status

GithubからV8のソースを持ってきて展開します

cd /opt/redash/ # $REDASH_HOME

curl -L https://github.com/getredash/redash/archive/v8.0.0.tar.gz -O
tar xvfz v8.0.0.tar.g
chown redash:root /opt/redash/redash-8.0.0
ls -al /opt/redash/redash-8.0.0

.envのシンボリックリンクを作ります

ln -s /opt/redash/.env /opt/redash/redash-8.0.0/.env

dockerから抜き取ったV8のアセットを展開します

cd /opt/redash/redash-8.0.0/client
tar xvfz /tmp/work/dist.tar.gz
ls -al /opt/redash/redash-8.0.0/client/dist

pip installdb migradeを実施します

cd /opt/redash/redash-8.0.0
# pipがchardetでコケたら以下を参考に
# https://stackoverflow.com/questions/49915951/cannot-uninstall-chardet
pip install -r requirements.txt
sudo -u redash bin/run ./manage.py db upgrade

currentのシンボリックリンクを差し替えます

ln -nfs /opt/redash/redash-8.0.0 /opt/redash/current

ここまで無事終わったら勝利は目前です、後はRedashを起動するだけ

/etc/init.d/redash_supervisord start
/etc/init.d/redash_supervisord status

Redashが無事起動してアクセスできれば作業は完了です。

無事起動しなかったら後は気合で頑張れ!!

終わりに

ご利用は自己責任で計画的に!!!

どのみち次のバージョンではPython2が全面的に切られるであろうから刹那の延命策です。

3
3
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
3
3