1. Organization (オーガナイゼーション)

1.1. はじめに

本書では、Exastro Suite における Organization (オーガナイゼーション) について説明します。

1.2. オーガナイゼーションとは

Exastro IT Automation 2.0 から導入されたマルチテナント機能におけるテナントの単位のことで、論理的に組織の空間を区分する単位のことで、たとえ同一の Exastro システムであってもデータの共有がされることのない、完全にプライベートな空間です。
Exastro Suite の各アプリケーションの利用を開始するためには、オーガナイゼーションを作成する必要があります。
オーガナイゼーション全体図

1.3. オーガナイゼーションの作成

オーガナイゼーションの作成方法について説明します。

1.3.1. 目的

オーガナイゼーション作成を行うことで、オーガナイゼーション管理者のアカウントが作成され、オーガナイゼーションごとのエンドポイントURLにアクセスすることができるようになります。
また、システム内部では下記の処理が実行されます。
  • 処理のながれ

    1. Keycloak に、オーガナイゼーション用のレルムデータと管理者ユーザが登録されます。

    2. MariaDB や MySQL といったリレーショナルデータベースに、オーガナイゼーション用のデータが登録されます。

    3. Exastro IT Automation の永続ボリュームに、オーガナイゼーション用のディレクトリが作成されます。

    4. GitLab に、オーガナイゼーション用のユーザが登録されます。

1.3.2. 前提条件

本作業には下記のコマンドが必要となるため、事前にインストールをしてください。
  • 前提条件

    • インストールが完了し、Keycloak の管理コンソールにログインできること

    • システム管理に必要な下記の情報があること

      • 管理コンソールの URL

      • システム管理者のユーザID

      • システム管理者のパスワード

    • 作業クライアントに必要なアプリケーションがインストールされていること

      • curl

      • git

      • jq

1.3.3. オーガナイゼーション作成

オーガナイゼーションの作成方法には、下記の3通りの方法があります。
  • 特徴

対話型スクリプトによる作成方法と違い複数のオーガナイゼーション管理ユーザを登録できます。
  • 作成方法

GitHub リポジトリから取得した資材の中にある、シェルスクリプトを実行しオーガナイゼーションを作成します。
  1. オーガナイゼーション作成用シェルスクリプトを、リポジトリから git clone により取得します。

    リスト 1.153 コマンド
    # Exastro Platform の資材を入手
    git clone https://github.com/exastro-suite/exastro-platform.git
    
  2. 設定ファイルの CONF_BASE_URL に Exastro Suite の管理用エンドポイント URL を設定します。

    リスト 1.154 コマンド
    # Exastro Platform への接続のための設定情報を登録
    vi ./exastro-platform/tools/api-auth.conf
    
    例えば、サービス公開の設定 で、Ingress を使ったサービス公開の設定をした場合は下記のようになります。
    リスト 1.155 create-organization.conf
    1- CONF_BASE_URL=http://platform-auth:8001
    2+ CONF_BASE_URL=http://exastro-suite-mng.example.local
    3  CURL_OPT=-sv
    

    Tip

    自己証明書を利用している場合、証明書エラーが発生します。
    設定ファイル内の CURL_OPT=-svCURL_OPT=-svk に変更することで証明書エラーを回避できますが、認証機関から発行された正しい証明書をインストールすることを推奨します。
  3. オーガナイゼーション情報の設定

    オーガナイゼーション作成時の初期登録情報として下記の項目を設定できます。
    表 1.247 オーガナイゼーション作成パラメータ

    項目

    説明

    変更

    デフォルト値・選択可能な設定値

    id

    オーガナイゼーションIDを指定。
    英小文字、数字、ハイフン、アンダースコアが利用可能。
    最大36文字。
    ※先頭文字は英小文字であること。
    ※予約語(後述)に合致しないこと。

    "org001"

    name

    オーガナイゼーション名を指定。
    最大255文字

    "org001-name"

    organization_managers

    オーガナイゼーション管理者の情報を指定。
    ※複数名登録するときは繰り返し指定可能

    (オーガナイゼーション管理者のリスト)

    organization_managers[*].username

    オーガナイゼーション管理者のユーザ名(ログインするときのID)を指定。

    "admin"

    organization_managers[*].email

    オーガナイゼーション管理者のE-mailアドレスを指定。

    "admin@example.com"

    organization_managers[*].firstName

    オーガナイゼーション管理者の名を指定。

    "admin"

    organization_managers[*].lastName

    オーガナイゼーション管理者の姓を指定。

    "admin"

    organization_managers[*].credentials[0].type

    認証方式を指定。

    不可

    "password"

    organization_managers[*].credentials[0].value

    オーガナイゼーション管理者の初期パスワードを指定。

    "password"

    organization_managers[*].credentials[0].temporary

    初回ログイン時のパスワード変更の要否の有無を指定。

    true (デフォルト): パスワードの変更を要求する。
    false: パスワードの変更を要求しない。

    plan.id

    リソースプランを指定。

    ※初期状態では存在しないため指定しない。

    options.sslRequired

    SSL 接続の有無を指定。

    external (既定): プライベート IP アドレスに固定する限り、ユーザは SSL 無しで Keycloak と通信可能。
    none: SSL の設定なし。
    all: すべての IP アドレスに対し、SSL を要求。(内部の API が HTTP アクセスのため選択不可)
    設定ファイルの作成は、./exastro-platform/tools/create-organization.sample.json を基に、作成するオーガナイゼーションの情報を指定した JSON ファイルを基に作成します。
    create-organization.sample.json
     1{
     2    "id"    :   "org001",
     3    "name"  :   "org001-name",
     4    "organization_managers" : [
     5        {
     6            "username"  :   "admin",
     7            "email"     :   "admin@example.com",
     8            "firstName" :   "admin",
     9            "lastName"  :   "admin",
    10            "credentials"   :   [
    11                {
    12                    "type"      :   "password",
    13                    "value"     :   "password",
    14                    "temporary" :   true
    15                }
    16            ],
    17            "requiredActions": [
    18                "UPDATE_PROFILE"
    19            ],
    20            "enabled": true
    21        }
    22    ],
    23    "plan": {
    24        "id": "plan-1"
    25    },
    26    "options": {}
    27}
    
    リスト 1.156 コマンド
    # 設定用ファイルの作成
    cp -pi ./exastro-platform/tools/create-organization{.sample,}.json
    
    # 設定用ファイルの編集
    vi ./exastro-platform/tools/create-organization.json
    

    Tip

    optionsの値に "sslRequired": "none" を指定することで、オーガナイゼーションユーザが http でのアクセスが可能となります。
  4. オーガナイゼーション作成実行

    スクリプトを実行してオーガナイゼーションを作成します。
    your usernameyour usernameExastro システム管理者の作成 で登録した、KEYCLOAK_USER 及び KEYCLOAK_PASSWORD です。
    リスト 1.157 コマンド
     ./exastro-platform/tools/create-organization.sh ./exastro-platform/tools/create-organization.json
    
     your username : INPUT-YOUR-USERNAME # システム管理者のユーザ名を入力します
     your password : INPUT-USER-PASSWORD # システム管理者のパスワードを入力します
    
     Create an organization, are you sure? (Y/other) : Y # Y を入力するとオーガナイゼーションの作成処理が開始します
    
    成功時の結果表示は、result が "000-00000”となります。
    リスト 1.158 実行結果 (成功時)
    ...
    < HTTP/1.1 200 OK
    < Date: Thu, 18 Aug 2022 01:49:13 GMT
    < Server: Apache/2.4.37 (Red Hat Enterprise Linux) mod_wsgi/4.7.1 Python/3.9
    < Content-Length: 107
    < Content-Type: application/json
    <
    {
      "data": null,
      "message": "SUCCESS",
      "result": "000-00000",
      "ts": "2022-08-18T01:49:17.251Z"
    }
    * Connection #0 to host platform-auth left intact
    
    失敗時の結果表示は、result が "000-00000”以外となります。
    リスト 1.159 実行結果 (失敗時)
    ...
    < HTTP/1.1 400 BAD REQUEST
    < Date: Thu, 18 Aug 2022 05:29:35 GMT
    < Server: Apache/2.4.37 (Red Hat Enterprise Linux) mod_wsgi/4.7.1 Python/3.9
    < Content-Length: 252
    < Connection: close
    < Content-Type: application/json
    <
    { [252 bytes data]
    * Closing connection 0
    {
      "data": null,
      "message": "指定されたorganization(org002)は作成済みのため、作成できません。",
      "result": "400-23001",
      "ts": "2022-08-18T05:29:35.643Z"
    }
    

1.4. オーガナイゼーションへのアクセス

オーガナイゼーション用サイトが表示できるかWebブラウザから確認します。
# 書式
http[s]://{Exastro Platform の管理用 URL}/{オーガナイゼーションID}/platform/

# 具体例
http://exastro-suite-mng.example.local/org001/platform/

1.5. その他制約事項・備考

1.5.1. オーガナイゼーションIDの予約語

以下に示すパターンに合致するワードは、オーガナイゼーションの ID として使用できません。
  • master

  • platform

  • account

  • account-console

  • admin-cli

  • broker

  • realm-management

  • security-admin-console

  • *-workspaces

  • system-*-auth

1.5.2. オーガナイゼーション作成を再実行する場合

オーガナイゼーション作成で失敗した場合、オーガナイゼーション作成の再実行をしても「指定されたorganization(xxx)は作成済みのため、作成できません。」というエラーが表示されることがあります。
このように、失敗したオーガナイゼーション ID でオーガナイゼーションの作成ができない場合は、コマンドパラメータに --retry オプションを付与して実行することで再作成をすることが可能です。
./exastro-platform/tools/create-organization.sh --retry
./exastro-platform/tools/create-organization.sh ./exastro-platform/tools/create-organization.sample.json