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千円程度になります。

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


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



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

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*

-rw-r--r--@ 1 **********  staff  6251494912  6 18 15:07 OracleAPEX-disk001.vmdk

-rwx------  1 **********  staff        8135  6 18 15:02 OracleAPEX.ovf

% 



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



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


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



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



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

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


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

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


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

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

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



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



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

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


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

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


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


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


SSHキーの追加として、キー・ペアを自動で生成を選択します。秘密キーの保存をクリックし、秘密キーをダウンロードしておきます。


作成をクリックします。

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

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


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


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


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

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

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

% ssh -i ssh-key-2024-06-18.key opc@***.***.**.***

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

ED25519 key fingerprint is SHA256:0XC2x8/lNHtaBfrzvJSp0QhB+8uSdlD1ZPNTNSjdUsg.

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-127257 ~]$ 


次にブラウザより、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

[opc@apex-127257 vars]$ cd /etc/yum/vars

[opc@apex-127257 vars]$ cat ocidomain

oracle.com

[opc@apex-127257 vars]$ cat ociregion


[opc@apex-127257 vars]$ sudo -s

[root@apex-127257 vars]# echo "-us-ashburn-1" > ociregion

[root@apex-127257 vars]# exit

exit

[opc@apex-127257 vars]$ cat ociregion

-us-ashburn-1

[opc@apex-127257 vars]$ 


Oracle Cloud Agentをインストールするために、yumリポジトリを登録します。

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

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

[ol8_oci_included]

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

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

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

gpgcheck=1

enabled=1

[root@apex-127257 yum.repos.d]# 


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

dnf -y install oracle-cloud-agent

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

Oracle Software for OCI users on Oracle Linux 9  72 MB/s |  92 MB     00:01    

Last metadata expiration check: 0:00:38 ago on Tue 18 Jun 2024 04:52:40 PM JST.

Dependencies resolved.

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

 Package               Arch      Version              Repository           Size

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

Installing:

 oracle-cloud-agent    x86_64    1.40.0-11632.el9     ol8_oci_included    127 M


Transaction Summary

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

Install  1 Package


Total download size: 127 M

Installed size: 360 M

Downloading Packages:

oracle-cloud-agent-1.40.0-11632.el9.x86_64.rpm   62 MB/s | 127 MB     00:02    

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

Total                                            62 MB/s | 127 MB     00:02     

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                        1/1 

  Running scriptlet: oracle-cloud-agent-1.40.0-11632.el9.x86_64             1/1 

Adding group: oracle-cloud-agent

Adding user: oracle-cloud-agent

Adding user: oracle-cloud-agent-updater

Adding user: ocarun


  Installing       : oracle-cloud-agent-1.40.0-11632.el9.x86_64             1/1 

  Running scriptlet: oracle-cloud-agent-1.40.0-11632.el9.x86_64             1/1 

Changing ownership of agent.yml* files to oracle-cloud-agent:oracle-cloud-agent

Changing ownership of /var/log/oracle-cloud-agent/updater.log to oracle-cloud-agent-updater:adm

Setting capabilities on bastions plugin

2024/06/18 16:53:36 Capability set on filePath: /usr/libexec/oracle-cloud-agent/plugins/bastions = [1 0 0 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

2024/06/18 16:53:36 Capability set on filePath: 20 = [1 0 0 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

2024/06/18 16:53:36 Capability set properly : [1 0 0 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

post install: starting services


  Verifying        : oracle-cloud-agent-1.40.0-11632.el9.x86_64             1/1 


Installed:

  oracle-cloud-agent-1.40.0-11632.el9.x86_64                                    


Complete!

[root@apex-127257 ~]#


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

コンピュート・インスタンスのモニタリングが開始され、メトリックに値が表示されるようになります。


続く