Auth0 Deploy CLIを使ってテナント情報をディプロイしてみた


はじめに

この記事はAuth0 Deploy CLIを使ってローカルのPCで作成したAuth0のテナント情報をリモートの本番テナントにディプロイする手順をまとめています。

検証環境

  • OS : macOS Mojave 10.14.6
  • node : 10.15.3
  • npm : 6.12.0

検証内容

Auth0のダッシュボードにログイン、左ペインの"Applications"をクリックして右上の"CREATE APPLICATION"を押します。

"Name"に任意の名前を入力して"Choose an application type"で"Machine to Machine Applications"を選択、"CREATE"を推します。

"Select an API..."で"Auth0 Management API"を選択して"Select all: All"をクリックして全てのScopeをチェック、"AUTHORIZE"を押します。Deploy CLIはAuth0 Management APIをコールするため設定しています。本番環境では用途に合わせてScopeを限定しますがこの記事は検証目的のため全てのScopeをチェックしています。

Auth0 Deploy CLIをPCにインストールします。

$ npm i -g auth0-deploy-cli

任意の作業ディレクトリを作成して移動します。

$ mkdir auth0-deploy-cli-demo
$ cd auth0-deploy-cli-demo

config.jsonを作成して編集します。"AUTH0_CLIENT_ID", "AUTH0_CLIENT_SECRET"には先のステップで作成したMachine to Machine ApplicationのID/Secretを指定します。"Applications"->"Settings"から確認できます。

$ touch config.json
auth0-deploy-cli-demo/config.json
{
  "AUTH0_DOMAIN": "kiriko.auth0.com",
  "AUTH0_CLIENT_ID": "xxxx",
  "AUTH0_CLIENT_SECRET": "xxxx",
  "AUTH0_ALLOW_DELETE": true
}

Auth0のテナント情報(ex/設定、Custom Script, Rules)をPCにエクスポートします。

$ a0deploy export -c config.json -f yaml -o ./tenant

auth0-deploy-cli-demo/tenant/tenant.yamlにテナント情報が出力されています。確認してみます。

auth0-deploy-cli-demo/tenant/tenant.yaml
emailProvider:
  name: smtp
  credentials:
    smtp_host: smtp.mailtrap.io
    smtp_port: 2525
    smtp_user: xxxx
    smtp_pass: YOUR_SMTP_PASS
  default_from_address: Travel0 Accounts <[email protected]>
  enabled: true
rules:
  - name: Account-Linking-Extension
    script: ./rules/Account-Linking-Extension.js
    stage: login_success
    enabled: false
    order: 120
--省略--

ローカルPCにエクスポートされた任意のRulesを変更してみます。auth0-deploy-cli-demo/tenant/rules配下の任意のJSを変更してみます。

ローカルPCの変更内容をリモートのテナントにインポートします。

$ a0deploy import -c config.json -i ./tenant/tenant.yaml

Auth0のテナントを確認してローカルPCの変更が反映されていれば成功です。

おわりに

"全ての企業がソフトウェア企業"と言っていいほどソフトウェアの重要性は増すばかりで、新しいソフトウェア機能を迅速に市場に投入するためにはDevOpsのような文化醸成、CI/CDツールを利用した自動的・継続的なソフトウェアデリバリーは不可欠かと思います。CI/CDツールが管理するソフトウェアデリバリーパイプラインに乗せるには、デリバリー対象が人が読めるコードになっていることが前提ですが、"as Code"化されてきたインフラストラクチャに比べてID領域のコード化はこれからかと思います。Auth0はID領域をコード化して、お客様がご利用されているCI/CDツールと連携してソフトウェアデリバリーパイプラインに簡単に組み込むことが可能です。