2022年11月22日火曜日

Oracle APEXの環境作成(8) - OCIコンピュート・インスタンスの作成

 今まで作成してきた仮想マシンを、Oracle Cloud Infrastructureのコンピュート・インスタンスとして動作させます。Oracle Cloudにアカウントがあり、仮想クラウド・ネットワークが構成されていることを前提としています。

今までは無料の範囲で作業ができましたが、カスタム・イメージの作成やコンピュート・インスタンスの作成(今回はVM.Standard.E4.Flex 1OCPU, 4GBメモリ)には費用がかかります。アカウントもアップグレードされている必要があります。

VM.Standard.E4.Flex 1OCPU 4GBの月額利用料は、全く停止させずに744時間使用して3千円程度になります。

仮想マシンが停止している状態から作業を始めます。

2023年5月18日追記
以下の作業をあらかじめ実施してカスタム・イメージに含めておくと、コンピュート・インスタンスの作成後の作業を減らすことができます。
Oracle APEXの環境作成(9) - REST呼び出しに使うウォレットの作成


仮想マシンのエクスポート



仮想マシンを停止します。

VirtualBoxのファイル・メニューより、仮想アプライアンスのエクスポートを実行します。


エクスポートする仮想マシンを選択します。今回の作業で作成しているのはOracleAPEXです。

次へ進みます。


エクポートするファイルの指定画面に移ります。ここで指定するファイル名の拡張子として、.ovaではなく.ovfを指定します。今回はファイル名をOracleAPEX.ovfとしています。

MACアドレスのポリシーとして、すべてのネットワークアダプターのMACアドレスを削除を選択しています。今回エクスポートする仮想マシンは、OCIのカスタム・イメージとして登録します。カスタム・イメージからは常に新しいコンピュート・インスタンスが作成されるため、MACアドレスも重複しないよう新しいものが割り当てられます。そのため、元となるイメージにMACアドレスを含める必要はありません。(MACアドレスを含んでいても、コンピュート・インスタンス作成時に置き換えられているようにも見えますが、最初からMACアドレスを含まない方が安全と判断しています)。

マニュフェストファイルは不要なので、チェックを外します。

.ovaファイルが出力先ではないため、.ovfファイルと.vmdkファイルがそれぞれ作成されます。Oracle Cloudへは、仮想ディスクである.vmdkファイルのみをアップロードします。

次へ進みます。


各種の情報を入力が要求されますが、.vmdkしか使わないので特に入力する必要はありません。そのまま完了をクリックします。

仮想マシンのエクスポートが開始します。


エクスポートが完了すると、仮想アプライアンス名-disk001.vmdkという名前で、VMDKファイルが作成されます。

今回の例では、OracleAPEX-disk001.vmdkが作成されます。

% ls -l OracleAPEX.ovf OracleAPEX-disk001.vmdk

-rw-r--r--  1 ********  staff  8647028736 11 18 17:17 OracleAPEX-disk001.vmdk

-rwx------  1 ********  staff        8067 11 18 17:10 OracleAPEX.ovf

% 




VMDKファイルのアップロード



オブジェクト・ストレージの任意のバケットに、エクスポートされたVMDKファイルをアップロードします。一般的なファイルのアップロードで、特別な作業はありません。


ネットワークの速度にもよると思いますが、私の環境では4時間近くかかりました。最終的にバケット内のオブジェクトのリストにVMDKファイルが現れます。



カスタム・イメージの作成



OCIコンソールよりコンピュートカスタム・イメージを開きます。

イメージのインポートを実行します。


名前は任意ですが、今回はOracleAPEX 23.1としました。オペレーティング・システムLinuxを選択します。インポートする対象のVMDKファイルは、オブジェクト・ストレージ・バケットからインポートを選択し、バケットのあるコンパートメントおよびバケットを選択します。バケットに含まれるオブジェクトからオブジェクト名としてVMDKファイル(今回はOracleAPEX-disk001.vmdk)を選択します。

イメージ・タイプVMDK起動モードとして準仮想化モードを選択し、イメージのインポートを実行します。


このインポート処理も少々時間がかかりましたが、最終的にカスタム・イメージが使用可能になります。

カスタム・イメージが使用可能になったので、続けてインスタンスの作成を行います。

インスタンスの作成をクリックします。




コンピュート・インスタンスの作成



カスタム・イメージの画面からインスタンスの作成を実行すると、コンピュート・インスタンスの作成画面が開きます。

作成するインスタンスの名前apexとします。


イメージには、先ほどインポートしたカスタム・イメージOracle APEX 23.1が選択されています。ShapeVM.Standard.E4.Flexです。

Change Shapeをクリックして1OCPU、メモリ4GBに変更します。


VirtualBoxでは、2CPU、4GBで構成していたので、同等のサイズです。


ネットワーキングについては、パブリックIPv4アドレスの割り当てが行われるように設定します。学習や研修の用途を想定しているので、インスタンスを作成してすぐにネットワーク経由で接続できるようにします。


SSHキーの追加として、キー・ペアを自動で生成を選択します。秘密キーの保存をクリックし、秘密キーをダウンロードしておきます。すでにキー・ペアが手元のPCにある場合は、公開キー・ファイル(pub)をアップロード、もしくは公開キーの貼付けも可能です。

2023年9月27日追記

公開キーがユーザーopcの.ssh/authorized_keysに書き込まれないため、ここでの設定が反映されないようです。ワークアラウンドとしてコンピュート・インスタンス作成後、コンソール接続よりrootで接続し、/home/opc/.ssh/authorized_keysに公開キーを追加する必要があります。そのため公開キーも保存しておくと良いです。

追記終了


作成をクリックします。

インスタンスの作成が開始します。最終的には実行中のステータスに変わります。パブリックIPアドレスが割り当たるので、そのIPアドレスを宛先にしてSSHによる接続ができます。

初回起動時はステータスが実行中になっても、SSH接続が可能になるまで少々時間がかかります。

リソースコンソール接続よりCloud Shell接続の起動をクリックし、コンソールに接続して起動状況を確認することができます。


コンソールにログイン・プロンプトが表示されると、コンピュート・インスタンスの起動は完了です。


SSHとAPEXに接続できることを確認します。そのために、ポート22および80への通信を許可するイングレス・ルールを、あらかじめ設定しておきます。

2023年9月23日追記

ワークアラウンドとして、コンソール接続からrootでログインし/home/opc/.ssh/authorized_keysに公開キーを追記します。

cat - << EOF > /home/opc/.ssh/authorized_keys
> 公開キーの貼り付け
> EOF

改行が行われず表示が重なるため、少々見にくいです。


公開キー書き込み後、コンソールからログアウトします。

追記終了

コンピュート・インスタンスに割り当てられたパブリックIPを確認し、SSHで接続します。

ssh -i 秘密キー・ファイル opc@IPアドレス

% ssh -i 秘密キー・ファイル opc@***.***.***.***

The authenticity of host '***.***.***.*** (***.***.***.***)' can't be established.

ED25519 key fingerprint is SHA256:sgFPo6M0S8zAEFLVFkvWVJMmd0jcGJBRCdE817jZEl0.

This key is not known by any other names

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '***.***.***.***' (ED25519) to the list of known hosts.

[opc@apex ~]$ 


次にブラウザより、APEXに接続します。

http://パブリックIP/ords/apex_admin

firewalldによって、ポート80宛の接続はORDSが待ち受けている8080へ転送されます。また、データベースおよびORDSは自動起動するように設定されています。

そのため、コンピュート・インスタンスを起動するだけでAPEXに接続できるようになっています。


以上でVirtualBoxの仮想マシンを元にした、Oracle Cloud Infrastructureのコンピュート・インスタンスの作成および実行ができました。


Oracle Cloud Agentのインストール


必須の作業ではありませんが、オラクルの以下のドキュメントの記載に沿ってOracle Cloud Agentをインストールしてみます。
https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/manage-plugins.htm

パブリックなYumリポジトリ(yum.oracle.com)の代わりに、Oracle Cloudのリージョンにあるリポジトリを参照するように設定を変更します。

/etc/yum/vars以下のociregionに、インスタンスが存在するリージョンを書き込みます。先頭に"-"を付加します。ファイルocidomainの内容はoracle.comなので、変更は不要です。

今回の作業では北米のAshburnリージョンにインスタンスを作成しているため、以下を記述しました。

-us-ashburn-1

[root@apex vars]# cat ociregion

-us-ashburn-1

[root@apex vars]# cat ocidomain

oracle.com

[root@apex vars]# 


Oracle Cloud Agentは、ol8_oci_includedリポジトリに含まれています。このリポジトリは未構成です。以下のマニュアルの記載に従うと、パッケージoci-included-release-el8をインストールするとリポジトリが構成されると記載されています。

https://docs.oracle.com/ja-jp/iaas/oracle-linux/getting-started/index.htm

調べた範囲ではパッケージoci-included-release-el8自体がol8_oci_includedに含まれているようで、以下のコマンドではパッケージが見つかりません。

dnf install oci-included-release-el8

[root@apex ~]# dnf install oci-included-release-el8

Failed to set locale, defaulting to C.UTF-8

Last metadata expiration check: 0:19:26 ago on Tue May 23 12:58:20 2023.

No match for argument: oci-included-release-el8

Error: Unable to find a match: oci-included-release-el8

[root@apex ~]# 


直接/etc/yum.repos.d/以下にol8-included-ol8.repoを作成します。以下の内容を記述します。
[ol8_oci_included]
name=Oracle Software for OCI users on Oracle Linux $releasever ($basearch)
baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL8/oci/included/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[root@apex yum.repos.d]# cat ol8-included-ol8.repo 

[ol8_oci_included]

name=Oracle Software for OCI users on Oracle Linux $releasever ($basearch)

baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL8/oci/included/$basearch/

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

gpgcheck=1

enabled=1

[root@apex yum.repos.d]# 


Oracle Cloud Agentをインストールします。

dnf -y install oracle-cloud-agent

[root@apex ~]# dnf -y install oracle-cloud-agent

Failed to set locale, defaulting to C.UTF-8

Oracle Software for OCI users on Oracle Linux   64 MB/s |  82 MB     00:01    

Last metadata expiration check: 0:00:31 ago on Tue May 23 13:23:01 2023.

Dependencies resolved.

===============================================================================

 Package               Arch      Version             Repository           Size

===============================================================================

Installing:

 oracle-cloud-agent    x86_64    1.31.0-8769.el8     ol8_oci_included    119 M


Transaction Summary

===============================================================================

Install  1 Package


Total download size: 119 M

Installed size: 340 M

Downloading Packages:

oracle-cloud-agent-1.31.0-8769.el8.x86_64.rpm   40 MB/s | 119 MB     00:02    

-------------------------------------------------------------------------------

Total                                           40 MB/s | 119 MB     00:03     

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction


[中略]


post install: starting services


  Verifying        : oracle-cloud-agent-1.31.0-8769.el8.x86_64             1/1 


Installed:

  oracle-cloud-agent-1.31.0-8769.el8.x86_64                                    


Complete!

[root@apex ~]# 


Oracle Cloud Agentがインストールできました。

コンピュート・インスタンスのモニタリングが開始します。


メトリックに値が表示されるようになります。


続く