複数の環境の管理

近い将来、複数の Genvid MILE SDK クラウド環境が必要になると思われます。デバッグ環境とプロダクション環境を別に設定するといった単純な理由で、もしくは複数のプロダクション環境が必要になるといった状況によるものかもしれません。

このセクションでは、プロフィールを使って複数の環境を取り扱う方法および、作業用ツールのカスタマイズ方法について説明します。

カスタム環境プロフィール

複数の環境を管理するにあたり、環境切り替え時に各環境が適切に設定されていることを確認することは容易ではありません。この処理を簡単に行えるように、Genvid MILE SDK では、名前付きプロフィールをサポートしています。

たとえば、デバッグ環境、プロダクション環境で、ツールの冗長性を調整したくなるかもしれません。~/.genvid/profile でプロフィールに記述することで、それが可能になります。

profile "production" {
  GENVID_TOOLBOX_LOGLEVEL = "INFO"
}

profile "debug" {
  GENVID_TOOLBOX_LOGLEVEL = "DEBUG"
}

GENVID_PROFILEproduction または debug に設定すると、内容に応じて環境が更新されます。

$ export GENVID_PROFILE="debug"
$ genvid-bastion env
> [...]
> GENVID_TOOLBOX_LOGLEVEL="DEBUG"
> [...]

$ export GENVID_PROFILE="production"
$ genvid-bastion env
> [...]
> GENVID_TOOLBOX_LOGLEVEL="INFO"
> [...]

genvid-bastion の サブコマンド env で、現在使用中の環境をツールに表示することができます。デフォルトのプロフィールとの違いを確認して、自分に最適な環境づくりの参考にしてください。

警告

プロフィール名を設定した場合、そのプロフィールが存在している必要があります。

プロフィールファイルの保存場所のカスタマイズ

プロフィールを検索するには、目的のプロフィールが見つかるまで、GENVID_PROFILES_PATH で定義したパスをツールボックスが解析します。

再帰的に検索するディレクトリや通常ファイルなど、 os.pathsep で分類したパスの一覧に設定することもできます。必要に応じて構造体にプロフィールを自由に格納してください。

警告

同一パス内に競合するプロフィール名を設定することはできません。

カスタムツールにプロフィールとの互換性を持たせる

スクリプトでプロフィールを使用する場合、他のツールボックスと同様、プロファイルと同時に使用すると便利です。その場合、スクリプトに Profile オブジェクトを作成し、そのいずれかの子の BaseTool インスタンスのインスタンスを作成する前に apply() メソッドを呼び出します。

その後、プロフィール インスタンスをツールの main() メソッドに渡します。

def main():
    profile = Profile()
    profile.apply()

    os.environ.setdefault("GENVID_TOOLBOX_LOGLEVEL", "INFO")

    tool = WebSample()
    return tool.main(profile=profile)

このコードは 3 つの処理を行います。

  1. Profile の constructor が、メモリ内の アクティブなプルフィールを探して読み込みます。

  2. profile.apply() は、アクティブなプロフィールで定義されるすべての環境変数にデフォルト値を与えます。デフォルトの環境変数を設定したり、BaseTool インスタンスを作成する前に、呼び出す必要があります。

  3. 最後に、診断のため、適用したプロフィールが main() に渡されます。

プロフィールのカスタムツールへの統合については、 プロフィール を参照してください。