Oracle Cloud(OCI) 組織管理を使って複数テナントの請求を一元管理してみる

# "組織管理"とは
組織管理 (Organization Management) は、 **複数のテナンシを一元管理できる機能** です。
一元管理と言っても、現時点 (2022/4/20) では 各テナンシを統制する機能は 無く、主な機能は **請求をまとめられる** 点にあります。

ユースケースとしては、**各テナンシで完全に分離された環境を持たせつつ、請求は単一のサブスクリプションに統合したい場合** などが挙げられます。
尚、OCI には **コンパートメント** という機能もあります。マルチテナンシ戦略を取るか、コンパートメント分割で構成するかは 要件に合わせて検討してください。
（参考：[独立したテナンシ、親子関係のテナンシとコンパートメントの違い](https://speakerdeck.com/ocise/ociji-shu-zi-liao-zu-zhi-guan-li-organization-management?slide=9)）

# 利用の流れ
組織管理は、**親となるテナンシ に、子となるテナンシを関連付ける** 形で利用します。
関連付けられたテナンシは親のサブスクリプションにマッピングされ、消費していきます。<font color="silver">※消費時の条件も、マッピングしたサブスクリプションの条件（レート・カードなど）が、子テナンシに適用されます。</font>

"子テナンシ" は、以下いずれかの方法で関連づけることが可能です。
:white_check_mark: [コンソール画面などを通じて新規作成する](#新規に子テナンシを作成する場合)
:white_check_mark: [既存のテナンシを招待する](#既存の子テナンシを招待する場合)

本記事では、各方法で子テナンシを招待する手順について記載していきます。

# 新規に子テナンシを作成する場合

1. 親となるテナンシにログインし、OCI コンソール・メニュー「三」から、`ガバナンスと管理` - `テナンシ` に アクセスします
2. `テナンシの追加` ボタンをクリックし、下記を設定します
・**新しい子テナンシの作成** を選択
・**テナンシ名** ：任意（新規作成する子テナンシのテナント名を設定）
・**ホーム・リージョン** ：任意（親テナンシがサブスクライブしているリージョンから選択可能）
・**管理者の電子メールアドレス** ：任意（ここで入力されたメールアドレスに新規テナンシへのサインイン手順が送られ、子テナンシの管理者となります）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/2f906311-0d08-a490-7321-5687c043c345.png)
設定後、`テナンシの追加` ボタンをクリックすると、正常に処理がリクエストされた旨のポップアップが右上に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/539a7f73-07cd-aaf9-5dac-7e1769036b17.png)
3. テナンシの追加操作後、管理者宛にメールが届きます。メールの内容に従って、子テナンシにサインインしてください。
※検証時(2021/11/5) は以下の内容を 2～3分で受信
送信元アドレス：`no-reply@organizations.oci.oraclecloud.com`
件名：`Your Oracle Tenancy is Ready.`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/92ec6c34-0355-8b0e-9de4-212e22b6a1ab.png)
4. 親テナンシの組織管理の画面に戻ると、以下が確認できます。
:heavy_check_mark: テナンシの一覧に新規作成した子テナンシが表示されていること
:heavy_check_mark: その子テナンシの マップ済サブスクリプション が デフォルトのサブスクリプション (親のサブスクリプション) になっていること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/d626962e-0ce6-1a89-3abe-935d12ccd31e.png)
一方、子テナンシの組織管理画面では、以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/592988ad-f38e-e76b-220d-32ea21a45a63.png)

これで、新規に子テナンシを作成する手順は完了です。子テナンシで発生した課金はマッピングされた親のサブスクリプションを消費していきます。

# 既存の子テナンシを招待する場合
:::note warn
テナンシを招待する前に、**親テナンシ、子テナンシのサブスクライブしているリージョンを確認してください**。
親となるテナンシがサブスクライブしているリージョンは、子となるテナンシがサブスクライブしているリージョンを **包含している必要があります** 。
:::

1. 子テナンシとなる既存のテナンシにログインし、右上の人型アイコン - `テナンシ: <テナンシ名>` をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/2f1e1a40-c57e-3300-99c7-b805ee2bfebb.png)
2. テナンシ詳細画面にある「OCID」の `コピー` をクリックし、子テナンシのOCIDを記録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/e0035c04-079d-ec67-e3d8-cc44e7772ae4.png)
3. 次に、親となるテナンシにログインし、OCI コンソール・メニュー「三」から、`ガバナンスと管理` - `テナンシ` に アクセスします
4. `テナンシの追加` ボタンをクリックし、下記を設定します
・**既存のテナンシの招待** を選択
・**招待名** ：任意（[ドキュメント](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/organization_management_overview.htm#invite_existing_tenancy)によると、「招待の送信試行の方向と回数を示す表記を使用すると便利」のようです。例：tenancyA to tenancyB 1st など）
・**受信者テナンシのOCID** ：手順2で記録したテナンシのOCIDを設定
・**受信者電子メール** ：子となるテナンシで組織管理の操作権限を持つ受信者のメールアドレスを設定（本検証時は、管理者権限を持つユーザーで実施）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/40beeb21-e86c-1127-2ba2-1c79c77df2f5.png)
設定後、`テナンシの追加` ボタンをクリックすると、正常に処理がリクエストされた旨のポップアップが右上に表示されます。また、招待画面が自動的に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/f77c201e-ea4a-f897-f93a-bb3668c98704.png)
5. 子テナンシに再度ログインし、OCI コンソール・メニュー「三」から、`ガバナンスと管理` - `招待` に アクセスします。
6. 親テナンシの招待が届いていることが確認できます。招待の右にあるトリコロンをクリックし、`招待に応じる` を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/5119f3a4-0cf9-e9a8-660c-e84fefe12324.png)
親テナンシ側の画面、子テナンシ側の画面いずれも、招待のステータスが「受入れ済」となります。（画面が更新されない場合は再読み込みなどしてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/a47cd7d1-4b94-f5ea-ee65-851b3327b62d.png)
7. 親テナンシの組織管理の画面に戻ると、以下が確認できます。
:heavy_check_mark: テナンシの一覧に招待した子テナンシが表示されていること
:heavy_check_mark: その子テナンシの マップ済サブスクリプション が デフォルトのサブスクリプション (親のサブスクリプション) になっていること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/fb864ab7-bffb-7702-bc5b-e21abb7720d5.png)
また、サブスクリプション・マッピングの画面を確認すると、既存のテナンシが使用していたサブスクリプションが一覧上で確認できるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/384668/d1e8b36b-6da5-4d61-0def-47eb2e8339a0.png)
この画面から、元のサブスクリプションにマッピングし直すことも可能です。詳細は OCIドキュメント:[サブスクリプション・マッピング](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/organization_management_overview.htm#subscription_mapping) を確認してください。

これで、既存のテナンシを招待する手順は完了です。
子テナンシで発生した課金が、親テナンシのサブスクリプションを消費するまでには時間差があるので注意してください。（招待が受け入れられてから１時間～２時間程度）

# まとめ+参考ドキュメント
本記事では子テナンシの追加方法にフォーカスしました。
組織管理を利用することによって、各テナンシの管理は完全に分離したまま、請求単位を１つに集約することが可能です。また、本記事では紹介しませんでしたが、**テナンシの管理は分離したまま、親テナンシで、各テナンシでのコスト使用状況の分析が一元的に行えます**。

詳しくは下記の参考ドキュメントなどをご参照ください。
<script async class="speakerdeck-embed" data-id="a7d1e15509464d9daefa9609a01c6d6c" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
- [OCI技術資料 : 組織管理 (Organization Management)](https://speakerdeck.com/ocise/ociji-shu-zi-liao-zu-zhi-guan-li-organization-management)
- [OCI documents: 組織管理の概要](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/organization_management_overview.htm)
- [A single pane of glass and a single contract to manage your tenancies](https://blogs.oracle.com/cloud-infrastructure/post/a-single-pane-of-glass-and-a-single-contract-to-manage-your-tenancies)