ローコードで業務アプリケーションを構築できる「Retool」オンプレ版をTerraformで構築してみました!
ユビーを退職しまして、6月より株式会社JMDCに入りフルスタックで開発やってます。
転職の理由はまた別の時に書こうと思いますが、今回はRetoolオンプレ版の環境構築をしてみたので紹介します。
ローコードでWebベースの業務アプリケーションを構築できるRetoolが便利!ということで、株式会社クエストさんのRetool導入のお手伝いをしました。
Retool SaaS版を使うために本番DBをインターネットに公開するのは流石に怖いということで、Retoolのオンプレ版(ベータ)を使うことになったのですが、実際のAWS環境に構築するのが思いのほか大変でした。
まずRetool とは?
Retoolは前述の通り、ローコードでWebベースの業務アプリケーションを構築できるクラウドサービスです。
詳しくは公式サイトやcdataさんのブログを参照ください。
Retoolがデフォルトで提供しているオンプレ版の導入方法
まず公式に提供されているオンプレ版のデプロイ方法ですが、https://my.retool.com/ に登録するとAWS EC2, Kubernetes, Helm, Local machineの方法が提供されています。
クエストさんの環境ではKubernetesを使っていないので、この中だと選択肢はEC2となります。
EC2のインストールはCloudFormationで提供されています。
2022年6月19日現在、以下の理由で利用できませんでした。
Security groupのVPC設定が正しくなく、デフォルトVPCでしか使えない。
独自ドメイン使えない。
DBを含むAll in oneインスタンスで立ち上がる。
SSHポートがパブリックになる。
もちろん、デプロイ後にGUIで微調整しても良いのですが、AWS上のリソースは可能な限り管理したいので、Terraformによる導入を試みました。
ざっとインターネットで検索すると、RetoolのterraformモジュールがすでにRetoolから公開されていました。
しかし、このモジュールも現時点では以下の問題があったため見送りました。
デフォルトVPCでしか使えない。
独自ドメイン使えない。
jwt_secretとかrandom stringがapplyごとに毎回変わってしまう。
Fargate対応されていない。
そのため、Retoolの構成の理解がてらに自前でTerraformモジュールを作ってみました!
上記の既存Terraformモジュールの問題解決に加えて、以下の観点を入れています。
管理ツール用のVPCにRetoolを構築、ターゲットのVPCにPeeringする。
ACMでRetool用ドメインのSSL証明書を作る。
デバッグはSSHでなくSession Managerを利用。
WAFを差し込めるようにしてBasic認証やIP制限を入れる。
この環境は以下の構成になっています。
それぞれのVPCは任意のものを使用できるようにしています。
同一のVPCを指定すればPeeringなしでそのまま使えます。
そして無事、セルフホストしたダッシュボードにアクセスすることができました!
今回はあくまでも試しに作ったものなので、構成の改善やモジュールとしての設定項目調整が必要にはなるかと思いますが、改善すべきところやフィードバックなどあればコメントでもGitHubへのPRでもいただけると嬉しいです。
もしすでにもっと完成度の高いRetoolモジュールが存在していたらそちらを使いたいので教えてください!