NetBox はデフォルトで所属するグループを REMOTE_AUTH_DEFAULT_GROUPS
で指定できる
NetBox を直接 VM で動かしている場合、設定ファイルとなる Python のリストを設定すれば動くのだが、 Docker 版 NetBox だと指定方法が少し違う。
指定方法はどこにも書いてなくてコード読まないとわからない1。
コード読むと次のように _AS_LIST
と指定してリスト形式で読み込むことがわかる。
REMOTE_AUTH_DEFAULT_GROUPS = _environ_get_and_map('REMOTE_AUTH_DEFAULT_GROUPS', '', _AS_LIST)
では _AS_LIST
は環境設定値をどのように読み込んでいるか。
これは _environ_get_and_map
関数の中を見てもすぐにはわからない。
def _environ_get_and_map(variable_name: str, default: str | None = None, map_fn: Callable[[str], Any | None] = None) -> Any | None: env_value = environ.get(variable_name, default) if env_value == None: return env_value if not map_fn: return env_value return map_fn(env_value)
実際に重要なのはこの関数の第3引数である map_fn
で、この定義は実はトップ変数で定義している。
_AS_BOOL = lambda value : value.lower() == 'true' _AS_INT = lambda value : int(value) _AS_LIST = lambda value : list(filter(None, value.split(' ')))
つまり、半角スペースを区切り文字としている。 そのため、複数グループを追加するよう Docker 版 NetBox に環境変数で指定する場合は次のようにする。
# デフォルトで group1 と group2 に新規ユーザーを追加する REMOTE_AUTH_DEFAULT_GROUPS="group1 group2"
注意点として単純に半角スペースで区切っているだけなので、たとえば group 1
のようにスペースが混じると駄目。
本当に素朴に半角スペースで区切っているだけなので、よくあるバックスラッシュ (\
) によるエスケープとか効かないことに注意。
まとめ
- Docker 版 NetBox で複数個の値を設定できる環境変数は半角スペース区切りで指定する
- エスケープとかないので、グループの名前に空白とか含めない方がいい
- そもそも空白が含めないのかもしれないが
- というかそもそも Docker 版 NetBox の設定値はコード読まないとわからないことが多い。↩