OCI Marketpkaceイメージを利用してWebLogic Serverの検証環境を作ってみた

- OCI MarketpkaceのWebLogic Serverイメージの構築（簡易検証環境）
- WebLogic Server管理コンソールへのアクセス
- サンプルアプリケーションの稼働確認

# はじめに
Oracle Cloud Infrastructure (OCI) Marketplaceで提供されているWebLogic Serverイメージを利用して、サンプルとして提供されているJavaアプリケーションの検証環境を作成します。
本記事では簡便な検証を目的としているため、パブリックサブネット上に1台のComputeインスタンス単独でWebLogic Serverを構築することを目的としています。

# 検証環境 
- WLS 14.1.1.0.210420.01 : OCI Marketplaceで提供されているOracle WebLogic Server Enterprise Edition

# WebLogic Server Marketplaceイメージの利用準備
## OCI上のネットワークの構成
本記事では簡易検証環境を構築することを目的としているため、インターネット経由で接続可能となるようにパブリック・サブネット上にWebLogic Serverが稼働するWLSインスタンスを構築します。Marketplaceの構築ウィザードから新規サブネット等を作成することも可能ですが、今回は下記に記すように**インターネット接続性を持つVCN作成**ウィザードを利用してVCNから作成しました。

### インターネット接続性を持つVCN作成ウィザード
OCIダッシュボードにログインし、OCIダッシュボードメニューから、**ネットワーキング**>**概要**にアクセスし、画面中央の 「インターネット接続性を持つVCN作成」の「VCNウィザードの起動」を選択してください。

![Fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/a1cd818f-9652-29ef-9be0-6ec1bf005a81.png)


下記の入力値を例に検証に利用するVCNとサブネットを作成します。

* 基本情報
    * VCN名 : 任意のVCN名　WLSTest
    * コンパートメント : 任意のコンパートメント名　 /dev
* VCNとサブネットの構成
    * VCN CIDRブロック 10.0.0.0/16
    * パブリック・サブネットCIDRブロック　10.0.0.0/24
    * プライベート・サブネットCIDRブロック　10.0.1/0/24
    * DNS解決：選択


### セキュリティ・ルールの変更
インターネットを経由してパブリック・サブネットに配置するWLSサーバにアクセス可能となるように各種ポートへの通信を許可するようにセキュリティ・リストを編集します。利用するポートの詳細については、[マニュアル](https://docs.oracle.com/cd/E83857_01/paas/weblogic-cloud/user/you-begin-oracle-weblogic-cloud.html#GUID-CB787D7C-E039-4E5A-9F12-133E9F2D1E40)を参照ください。

OCIダッシュボードメニューから、**ネットワーキング**>**仮想クラウド・ネットワーク**にアクセスし、作成したVCN (本記事内ではWLSTest) を選択、画面左下のリソースメニューより**セキュリティ・リスト**を選択、セキュリティ・リストの一覧より**Default Security List for VCN名**を選択、**画面中央のイングレス・ルールの追加**ボタンをクリックし、下記の設定を追記してください。

---
|ステートレス|ソース・タイプ|ソースCIDR|IPプロトコル|ソース・ポート範囲|宛先ポート範囲|
|---|---|---|---|---|---|
|いいえ|CIDR|0.0.0.0/0|TCP|All|22|
|いいえ|CIDR|0.0.0.0/0|TCP|All|7001-7004|
|いいえ|CIDR|0.0.0.0/0|TCP|All|9073|
|いいえ|CIDR|0.0.0.0/0|TCP|All|9999|
---

## OCI IAMのポリシーの追加
[マニュアル](https://docs.cloud.oracle.com/en-us/iaas/mysql-database/doc/policy-details-mysql-database-service.html#GUID-CE981948-6203-4366-A5F9-DB1746055531)を参考にOracle MySQL Database Serviceを利用するために必要なポリシーを設定します。

筆者の環境ではWLSインスタンスが稼働する環境用に */wls* コンパートメントと開発用のグループである*WLS*が作成済で、*WLS*グループにはMarketplaceからWebLogic Serverを構築するIAMユーザーが追加されています。今回の環境では、ルート・コンパートメント下に下記の様な*WLS*ポリシーを設定しました。

```
Allow group WLS to use app-catalog-listing in compartment wls
Allow group WLS to manage instance-family in compartment wls
Allow group WLS to manage virtual-network-family in compartment wls
Allow group WLS to manage volume-family in compartment wls
Allow group WLS to manage load-balancers in compartment wls
Allow group WLS to manage orm-family in compartment wls
Allow group WLS to manage vaults in compartment wls
Allow group WLS to manage keys in compartment wls
Allow group WLS to manage secret-family in compartment wls
Allow group WLS to read metrics in compartment wls
Allow group WLS to inspect autonomous-transaction-processing-family in compartment wls
Allow group WLS to inspect database-family in compartment wls
Allow group WLS to manage virtual-network-family in compartment wls
Allow group WLS to inspect tenancies in tenancy
Allow group WLS to use secret-family in tenancy
Allow group WLS to use tag-namespaces in tenancy
Allow group WLS to inspect limits in tenancy
```

次に、動的グループ*DynamicGrWLS*を作成して、作成した動的グループに対してOCIリソースを利用するためのポリシーを作成します。まず、OCIダッシュボードメニューから、**アイデンティティとセキュリティ**>**コンパートメント**にアクセスし、作成済のコンパートメント/wlsのOCIDをメモします。次に、OCIダッシュボードメニューから、**アイデンティティとセキュリティ**>**動的グループ**にアクセスし、下記のように動的グループ*DynamicGrWLS*を作成します。

---

* 動的グループの作成
    * 名前 : 任意名前　DynamicGrWLS
    * 説明 : コメント記入
    * 一致ルール ： instance.compartment.id = コンパートメント/wlsのOCID

---

作成した動的グループ*DynamicGrWLS*に対して、ルート・コンパートメント下に下記の様な*DGWLS*ポリシーを設定しました。

```
Allow dynamic-group DynamicGrWLS to use secret-family in compartment wls
Allow dynamic-group DynamicGrWLS to use keys in compartment wls
Allow dynamic-group DynamicGrWLS to use vaults in compartment wls
Allow dynamic-group DynamicGrWLS to manage instance-family in compartment wls
Allow dynamic-group DynamicGrWLS to manage virtual-network-family in compartment wls
Allow dynamic-group DynamicGrWLS to manage volume-family in compartment wls
Allow dynamic-group DynamicGrWLS to manage load-balancers in compartment wls
Allow dynamic-group DynamicGrWLS to use autonomous-transaction-processing-family in compartment wls
Allow dynamic-group DynamicGrWLS to inspect database-family in compartment wls
```

## WebLogic Serverの管理パスワードを管理するためのシークレットの作成

OCIダッシュボードメニューから、**アイデンティティとセキュリティ**>**ボールト**にアクセスして、**ボールトの作成**より、wlsコンパートメントにボールト*vault4wls*を作成します。ここで「仮想プライベート・ボールトにする」の項目はチェック不要です。作成したボールト*vault4wls*の詳細画面にアクセスして、画面中央下部に存在する**キーの作成**ボタンより、マスター暗号化キーを登録します。ウィザード内の入力例を下記に示します。

---

* キーの作成
    * コンパートメントに作成 : 任意のコンパートメント名　 /wls
    * 保護モード　: Software
    * 名前 : 任意  4wls
    * キーのシェイプ：アルゴリズム ： AES (Symmetric key for Encrypt and Decrypt)
    * キーのシェイプ：長さ ： 256ビット
    
---


次に、*vault4wls*の詳細画面左下部のリソースメニューより**シークレット**メニューを選択、画面中央下部に存在する**シークレットの作成**ボタンより、WebLogic Serverの管理パスワードを管理するためのシークレットを作成します。ウィザード内の入力例を下記に示します。

---
* シークレットの作成
    * コンパートメントに作成 : 任意のコンパートメント名　 /wls
    * 名前 : 任意  WLS
    * 説明 : コメント記入
    * 暗号キー：前述の手順で登録したマスター暗号化キーを選択 4wls
    * シークレット・タイプ・テンプレート ： プレーン・テキスト
    * シークレット・コンテンツ : WebLogic Serverの管理パスワードに指定する文字列を入力

---

作成したシークレットのOCIDをメモしておきます。


# WebLogic Server Marketplaceイメージの利用したComputeインスタンスの構築
## Marketplace上のWebLogic Serverイメージの選択

OCIダッシュボードメニューから、**マーケットプレイス**>**全てのアプリケーション**にアクセスし、画面上部の検索窓に*WebLogic*と入力して、WebLogicの構築イメージを検索します。2021年5月の時点では、下記のイメージが表示されます。

---

* Oracle WebLogic Server Suite UCMまたはBYOL
* Oracle WebLogic Server Enterprise Edition UCMまたはBYOL
* Oracle WebLogic Server Suite for OKE UCMまたはBYOL
* Oracle WebLogic Server Enterprise Edition for OKE UCMまたはBYOL
* Oracle WebLogic Server Standard Edition BYOL
* Oracle Enterprise Data Quality on WebLogic

---

UCMは従量課金、BYOLは購入済のライセンス持ち込みを意味しています。
本記事では、Oracle WebLogic Server Enterprise Edition UCMを選択しました。

## Marketplace上のWebLogic Serverイメージからリソース・マネージャー・スタックの起動

マーケットプレイスのWebLogicイメージを選択すると、下記のような詳細画面が表示され、画面右上部より構築するWebLogic Serverのバージョン、デプロイするコンパートメント名を選択し、Oracleの使用条件への合意チェックした後、*スタック*の起動ボタンを選択し、リソース・マネージャー・スタックの作成ウィザードを起動します。

![Fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/e3d13d7b-18a6-526c-177d-52abca5cbdbd.png)



リソース・マネージャー・スタックの作成ウィザードの入力例を下記に記します。

---
* スタック情報
    * 名前 : 任意
    * 説明　: 任意
    * コンパートメントに作成 : wls
    * Terraformのバージョン　：デフォルト　0.12.x

* 変数の構成
* WebLogic Server Instance
    * Resource Name Prefix : 作成するリソースの接頭辞 wls
    * WebLogic Server Shape : Computeシェイプ VM.Standard.E4.Flex
    * OCPU Count : OCPU数 1 (E4インスタンスのRAM容量は1 OCPUあたり15 GB) 
    * SSH Public Key : SSHキーファイルを登録
    * WebLogic Server Node Count : 構築するWebLogic Serverのノード数 1
    * WebLogic Server Admin User Name : 管理者アカウント名 weblogic
    * Validated Secrets OCID for WebLogic Server Admin Password :　WebLogic管理者パスワードを登録したシークレットのOCIDを登録
    * JDK version : jdk8 or jdk11 (Oracle Identity Cloud Serviceのサンプルアプリケーションを稼働させるためjdk8を選択)

* WebLogic Server Instance Advanced
    * WLS Instance Advanced Configuration : 選択
    * WebLogic Server Node Manager Port : 5556
    * WebLogic Server Admin Console Port : 7001
    * WebLogic Server Admin Console SSL Port : 7002
    * WebLogic Cluster Port : 5555
    * WebLogic Managed Server External Port : 7003
    * WebLogic Managed Server External SSL Port : 7004
    * Deploy Sample Application : 選択

* WebLogic Server Network
    * Virtual Cloud Network Strategy : Use Existing VCN
    * Network Compartment : VCNが存在するコンパートメント dev
    * Existing Network : VCN名を指定 WLSTest
    * Subnet Strategy : Use Existing Subnet
    * Subnet Compartment : Subnetが存在するコンパートメント dev
    * Subnet Type : Use Public Subnet
    * Subnet Span : Regional Subnet
    * Existing Subnet for WebLogic Server : パブリック・サブネット-WLSTest
    * Provison Load Balancer : ロードバランサーの構成　本記事では選択しない

* OCI Policies
    * OCI Policies : 選択する

* Configure Application Datasource
    * Configure Application Datasource : 選択しない

* Tags (特に設定しない)

---

最後の**確認画面**まで到達したら**作成**ボタンを選択。リソースマネージャーのジョブが開始され、OCIの各種リソースが自動作成されます。
ジョブ詳細の画面に表示される状態が**成功**になれば、WebLogic Serverのインスタンスの作成が完了となります。

![Fig3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/7dfc09a0-c398-7614-6318-9e8c6dc4320c.png)


# WebLogic管理コンソールへのアクセス

OCIダッシュボードメニューから、**コンピュート**>**インスタンス**より作成されたWebLogic Serverが稼働するComputeインスタンスのパブリックIPをメモします。そしてWebブラウザより、https://ComputeインスタンスのPublicIPアドレス:7002/console のURLよりWebLogicの管理コンソールにアクセスできます。（ブラウザによってはセキュリティの警告が出ますが、適宜例外の追加を行ってください）
ユーザー名にリソース・マネージャー・スタックの作成ウィザードで入力した管理者アカウント名 (例: weblogic)、パスワードにシークレットに設定したWebLogic Serverの管理者パスワードを平文で入力してログインできます。

![Fig4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/cfa35225-7e6f-5e73-ac9e-00a582e2a33a.png)
![Fig5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/8244226e-74b3-3b8c-5af9-4f17fd6fdf59.png)


画面左の**ドメイン構造**メニューより、**デプロイメント**を選択、*sample-app*の状態が*アクティブ*で、ヘルスが*OK*であることを確認した後、サンプルアプリケーションが稼働するURL、http://ComputeインスタンスのPublicIPアドレス:9073/sample-app/ にアクセスすることで稼働を確認できます。

![Fig6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/6e83325f-4251-5070-fab7-509fcc860359.png)

![Fig7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831381/e411a8d2-4bad-8946-f850-f5286cd397f0.png)

# さいごに
本記事では簡易的なWebLogic Serverの検証環境の構築を目的に、Marketplaceイメージを利用してパブリック・サブネット上のシングル構成で構築を行いました。本記事中では触れられませんでしたが、データベース層との連携やロードバランサを利用したクラスタ構成、踏み台サーバを利用したプライベートサブネット構成など複雑な構成を容易に設定可能な構築ウィザードがOCIには用意されています。そのため、プロジェクトで急遽必要になった開発や検証といった用途に留まらず、本番環境のデプロイにも適したWebLogic環境を迅速に用意できるのもポイントです。


# 関連情報
[Oracle WebLogic Server for Oracle Cloud Infrastructureの使用](https://docs.oracle.com/cd/E83857_01/paas/weblogic-cloud/user/index.html)