Technical Blog テクニカルブログ
  1. HOME
  2. テクニカルブログ
  3. Lookerの開発環境から本番環境にコンテンツ移行してみた(検証編)

Lookerの開発環境から本番環境にコンテンツ移行してみた(検証編)

投稿者:中島

はじめに

※本記事はNI+C TeamGCP Advent Calendar 2023 24日目の記事となります。

こんにちは、日本情報通信の中島です。
今回のブログはLookerの開発環境について調査してみた(概要編)「3.開発→本番インスタンスへのダッシュボードの移行方法」でご紹介した、Looker Deployerを使用したコンテンツを移行する手順を実際にご紹介させていただきます。

Looker Deployerではまとめてコンテンツを移行することに特化しており、
大変便利なOSSツールとなっております。
今回移行の検証にあたり、躓いた点も多々あったため、皆様の参考にしていただければと思います。

目次

  • Looker Deployerとは
  • 手順
    • 1.実施環境
    • 2.セットアップ(Gazer/Looker Deployerのインストール)
    • 3.接続情報の認証
    • 4.コンテンツのデプロイ
  • さいごに

Looker Deployerとは


Looker Deployer (別名「ldeploy」) は、複数のインスタンス間でLooker オブジェクトを移動するのに役立つコマンドラインツールです。Lookerオブジェクトとは、Look、Dashboard、folder、Connection、Boardsが含まれます。

また同じOSSのCLIツールとしてGazerがあります。
Gazerを使用する場合、ダッシュボードをまとめて(フォルダ単位などで)移行することはできないため、
シェルスクリプトなどを併用して繰り返し実行するか、ldeployの併用を検討してください。

インストール、使用方法についてはLooker Open Source | looker_deployerを参考にさせていただきました。

手順


Google Compute Engineを利用して、「looker-test」という名前のVMインスタンスを作成し、Ubuntuで実施しました。

前提条件として下記2点の注意が必要です。
 1.ldeployは一部の機能にGazerを使用しているため、Gazerのインストールが必要
 2.ldeployにはPython 3.6 ~ 3.9 が必要

  • Ubuntu:20.04,6 LTS
  • Ruby:2.7.0
  • gem:3.1.2
  • Gazer:0.3.12
  • Python:3.8.10
  • Looker Deployer:0.3.11

Rubyをインストールします。

$ sudo apt -y install ruby-full

Gazerをインストールします。

$ sudo gem install gazer

Looker Deployerをインストールします。

$ pip install looker-deployer

私の場合pipコマンドが見つかりませんとエラーメッセージが出たので、pyhon3-pipパッケージをインストールします。

$ sudo apt update
$ sudo apt install python-pip

インストールが完了したら再び先ほどのpipコマンドを実行して、ldeployをインストールしてください。
また$ ldeploy –help コマンドで各コマンドの使用方法を確認できるので、試してみてくださいね。

まずLookerでAPI3キーの払い出し(開発環境と本番環境の両方)を行います。
下記手順となります。

 1. Looker インスタンスへアクセス
 2. Looker のユーザー管理画面に移動
 3. Admin メニュー
 4. Users をクリック
 5. API キーの払い出しを行うユーザーの Edit 画面に移動
 6. API キー項目の「キーの編集」
 7. 「新しいAPIキー」を押下するとキーが生成されるので Client IDとClient Secret をメモ

次にldeployを使用する作業ディレクトリ上で、looker.iniファイルを作成し、LookerAPI3キーの情報を登録します。

$ touch looker.ini
$ vi looker.ini

looker.iniファイルに記載する内容は以下の通りです。(dev=開発、prod=本番とする)
port番号は「19999」を設定しました。

 [dev]
  base_url=https://looker-dev.company.com:19999
  client_id=abc
  client_secret=xyz
  verify_ssl=True

 [prod]
  base_url=https://looker-prod.company.com:19999
  client_id=abc
  client_secret=xyz
  verify_ssl=True

下記画面は実際に私がlooker.iniファイルに記載した内容です。

最後にlooker.iniファイルのアクセス権限の変更を行います。(読み出し許可と書き込み許可)

$ chmod 0600 looker.ini

こちらで looker.iniファイルへの API3 キーの情報登録は完了です。

今回はフォルダ単位のコンテンツ移行をやってみようと思います。
コマンドの詳細の書き方は、冒頭に記載したLooker Open Source | looker_deployerをご参考ください。

開発環境のマイフォルダ内に「資材移行test_dev」というフォルダを作成し、
中に「移行検証ダッシュボード」というダッシュボードを作成します。
URL末尾のフォルダID(今回であれば94)をコマンド実行で指定する必要があります。

次に本番環境のSharedフォルダ内に「資材移行test_prod」というフォルダを作成します。
デプロイ先のフォルダへのパス情報(今回であればShared/資材移行test_prod)をコマンド実行で指定する必要があります。

まずは開発環境からコンテンツのexportを行います。
下記が実際に私が実行したコマンドになります。(赤字は先ほど指定したフォルダID)

$ ldeploy content export --ini /home/tomoka_nakajima/looker.ini  --env dev --folders 94 --local-target /home/tomoka_nakajima/Looker

ダッシュボードやフォルダの定義情報がjson形式で作成されているのを確認しました。

次にexportしたコンテンツを本番環境にimportを行います。
下記が実際に私が実装したコマンドになります。(赤字は先ほど指定したデプロイ先のフォルダへのパス情報)

$ ldeploy content import --ini /home/tomoka_nakajima/looker.ini --env prod --folders "/home/tomoka_nakajima/Looker/Users/Tomoka Nakajima" --recursive --target-folder Shared/資材移行test_prod

本番環境の「資材移行test_prod」フォルダの配下に、開発環境からexportしたフォルダ「資材移行test_dev」とダッシュボード「移行検証ダッシュボード」がimportされていることを確認しました。

さいごに


今回の移行検証では、思わぬ落とし穴が発覚し、想定通りに進まなかったところが多々ありました。。。

例えばLookMLでリンク定義をしている箇所について、移行前と移行後ではダッシュボード番号が変更していました。
これはユーザー定義ダッシュボードはimportされたタイミングで別ID(ダッシュボード番号)が採番されますので、
元のダッシュボードの番号と異なるものが生成されるようです。
ダッシュボードリンクなどを利用している場合はこの点を注意する必要があります。
上記問題を回避する場合は、ダッシュボード番号ではなく一意のslug を使用するか、もしくはlookml ダッシュボードの利用を検討ください。

またGazerやLooker DeployerはOSS での提供となるため、Looker のチャットサポート窓口では使用方法等に関するサポートは基本的に受けられないのでご注意ください。
(他の方の検証ブログを参考、社内の皆様にたくさんご助言・ご協力いただきました…感謝です!)

このブログが少しでも皆様の参考になれば幸いです!

ページのトップへ