機能の記事は、こちらの前振りでした。これまでは手作業で構築していましたが、手順の多さにムキーとなってました。
注意
- こちらの記事ではMacを使用しています。
- AWSへのデプロイです。顧客管理VPCを用いたPrivateLink構成のデプロイとなります。パックエンド接続のみです。
色々サンプルが公開されています。最初はこれをベースに自分で設定ファイルを作成しようとしましたが早々に挫折しました。
結局、私のニーズに合ったのがこちらでした。
シェルスクリプト化されていますが、オプションでリージョンやインターネットゲートウェイの有無を制御することができて便利です。以下のようなアーキテクチャとなります。
準備
Terraformのインストール
Terminalで以下のコマンドを実行します。
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
上のコマンドを実行した際に、
==> Installing terraform from hashicorp/tap
Error: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences.
If that doesn't show you any updates, run:
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Alternatively, manually download them from:
https://developer.apple.com/download/all/.
You should download the Command Line Tools for Xcode 13.4.
と言うエラーが出る場合には、以下を実行してCommand Line Toolsをアップデートします。
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
AWS CLIのインストールおよび設定
こちらのGUIインストーラでインストールします。
こちらを参考に設定を行います。AWSアクセスキーを取得してaws configure
を実行した際に指定します。
Terraformの設定
-
こちらのリポジトリをローカルにクローンします。
-
configure.sh
があるディレクトリにsecrets.tfvars
というファイルを作成し、以下の内容を記述します。secrets.tfvarsdatabricks_account_id = "<databricks account id>" databricks_account_name = "<databricks account name>" databricks_account_username = "<databricks account owner username>" databricks_account_password = "<databricks account owner password>"
- databricks_account_id: DatabricksのアカウントID。
- databricks_account_name: S3バケット名のプレフィクスになります。
- databricks_account_username: Databricksアカウントオーナーのメールアドレス。
- databricks_account_password: Databricksアカウントオーナーのパスワード。
-
configure.sh
を実行することでワークスペースがデプロイされるのですが、オプションで挙動を変更することができます。ここでは、-nocmk all
を指定して、カスタマーマネージドキーによる暗号化を抑制し、-w pl-tf-test-workspace
でDatabricksワークスペース名を指定し、-r ap-northeast-1
でAWSリージョンを指定しています。それ以外のオプションはこちらで説明されています。以下を実行することでワークスペースがデプロイされます。./configure.sh -nocmk all -w pl-tf-test-workspace -r ap-northeast-1
こちらのテンプレート、このほかにも公衆回線からのアクセスの許可やインターネットゲートウェイの導入、そもそものPrivateLinkの構成としない等、非常に柔軟なコントロールが可能となっています。これまでAWSマネジメントコンソールとDatabricksアカウントコンソールを行ったり来たりしていたのはなんだったのか...。仕組みを学べることは意味ありますし、あとはこのテンプレートを自分でカスタマイズできるようにならなくては。