2024年3月12日火曜日

Azureの仮想マシンでOracle Autonomous Database Free Container Imageを実行する

Microsoft Azureで仮想マシンを作成し、Oracle Autonomous Database Free Container Imageを実行してみました。インスタンスを作った後は、Oracle Cloudのコンピュート・インスタンスで動作させた手順とあまり違いはありません。

以下より、実施した作業について紹介します。

AzureのVirtual Machinesの画面より、Azure仮想マシンを作成します。

基本タブの仮想マシン名adb-freeとします。イメージとしてコンテナ・イメージを実行した実績のあるOracle Linux 8.8(LVM) - x64 Gen2を選択します。VMアーキテクチャx64サイズStandard_D2s_v3 - 2 vcpu数, 8GiBのメモリ($70.08/月)を選択します。


必ずしも必要ではありませんが、ネットワークタブのVMが削除されたときにパブリックIPとNICを削除するチェックを入れています。


確認および作成のタブを開き、作成を実行します。


新しいキーの組の生成というポップアップが開くので、秘密キーのダウンロードとリソースの作成をクリックします。作成した仮想マシンにSSH接続する際に使用する秘密キーのファイルがダウンロードされます。


仮想マシンadb-freeが作成されます。割り当てられたパブリックIPアドレスに接続する際にホスト名が使えるように、ローカルのhostsファイルにエントリをazure-adb-freeとして追加しておきます。


ポート15228443への通過許可を与えます。

仮想マシンadb-freeリソースグループを開きます。


リソースグループに含まれているネットワークセキュリティグループを開きます。


ネットワークセキュリティグループの受信セキュリティ規則を選択し、追加をクリックします。


ソースAnyソースポート範囲* とします。サービスCustom宛先ポート範囲1522,8443を指定し、プロトコルTCPアクション許可を選択します。

名前AllowAdbFree1522and8443とし、追加をクリックします。


受信セキュリティ規則にポート15228443の通過許可が追加されます。


作成した仮想マシンに接続し、Oracle Autonomous Database Free Container Imageからコンテナadb-freeを作成して実行します。

仮想マシンadb-freeを開き、接続タブの接続を開くと、SSH接続の手順が表示されます。


仮想マシンへの接続はネィティブSSHで実施します。

仮想マシンのパブリックIPアドレスazure-adb-freeとしてローカルのhostsに登録済みであり、秘密キーファイルadb-free_key.pemとしてダウンロードされていると、接続に使用するsshコマンドは以下ようになります。

ssh -i adb-free_key.pem azureuser@azure-adb-free



Azureの仮想マシンはOracle Linux 8のイメージより作成しています。

以下のコマンドで、podmanを含むコンテナツールをインストールします。

sudo dnf -y module install container-tools:ol8

[azureuser@adb-free ~]$ sudo dnf -y module install container-tools:ol8

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

Ksplice Uptrack for Oracle Linux                 13 kB/s | 5.0 kB     00:00    

Oracle Linux 8 BaseOS Latest (x86_64)            74 MB/s |  71 MB     00:00    

Oracle Linux 8 Application Stream (x86_64)       79 MB/s |  55 MB     00:00    

Oracle Linux 8 Addons (x86_64)                   28 MB/s | 9.7 MB     00:00    

Latest Unbreakable Enterprise Kernel Release 7   93 MB/s |  28 MB     00:00    

Dependencies resolved.

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

 Package

        Arch   Version                                      Repository     Size

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

Installing group/module packages:

 aardvark-dns

        x86_64 2:1.7.0-1.module+el8.9.0+90147+a4870853      ol8_appstream 1.0 M

 buildah

        x86_64 1:1.31.3-3.0.1.module+el8.9.0+90147+a4870853 ol8_appstream 8.8 M

 cockpit-podman

        noarch 75-1.module+el8.9.0+90147+a4870853           ol8_appstream 738 k

 conmon x86_64 3:2.1.8-1.module+el8.9.0+90147+a4870853      ol8_appstream  56 k

 container-selinux

        noarch 2:2.221.0-1.module+el8.9.0+90147+a4870853    ol8_appstream  68 k

 containernetworking-plugins

        x86_64 1:1.3.0-8.0.1.module+el8.9.0+90147+a4870853  ol8_appstream  21 M

 containers-common


[中略]


  python3-pyxdg-0.25-16.el8.noarch                                              

  runc-1:1.1.12-1.module+el8.9.0+90147+a4870853.x86_64                          

  shadow-utils-subid-2:4.6-19.el8.x86_64                                        

  skopeo-2:1.13.3-3.0.1.module+el8.9.0+90147+a4870853.x86_64                    

  slirp4netns-1.2.1-1.module+el8.9.0+90147+a4870853.x86_64                      

  udica-0.2.6-20.module+el8.9.0+90147+a4870853.noarch                           

  yajl-2.1.0-12.el8.x86_64                                                      


Complete!

[azureuser@adb-free ~]$


Oracle Linuxなので、firewalldにポート15228442の接続許可を与えます。

sudo firewall-cmd --add-port=1522/tcp
sudo firewall-cmd --add-port=8443/tcp
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --list-all

[azureuser@adb-free ~]$ sudo firewall-cmd --add-port=1522/tcp

success

[azureuser@adb-free ~]$ sudo firewall-cmd --add-port=8443/tcp

success

[azureuser@adb-free ~]$ sudo firewall-cmd --runtime-to-permanent

success

[azureuser@adb-free ~]$ sudo firewall-cmd --list-all

public (active)

  target: default

  icmp-block-inversion: no

  interfaces: eth0

  sources: 

  services: cockpit dhcpv6-client ssh

  ports: 1522/tcp 8443/tcp

  protocols: 

  forward: no

  masquerade: no

  forward-ports: 

  source-ports: 

  icmp-blocks: 

  rich rules: 

[azureuser@adb-free ~]$


設定するパスワードをあらかじめ環境変数MYPASSに設定します。

export MYPASS=<パスワード>

コンテナadb-freeを作成します。

podman run -d \
-p 1521:1522 \
-p 1522:1522 \
-p 8443:8443 \
-p 27017:27017 \
-e WORKLOAD_TYPE='ATP' \
-e WALLET_PASSWORD=$MYPASS \
-e ADMIN_PASSWORD=$MYPASS \
--cap-add SYS_ADMIN \
--device /dev/fuse \
--name adb-free \
container-registry.oracle.com/database/adb-free:latest


[azureuser@adb-free ~]$ podman run -d \

>  -p 1521:1522 \

>  -p 1522:1522 \

>  -p 8443:8443 \

>  -p 27017:27017 \

>  -e WORKLOAD_TYPE='ATP' \

>  -e WALLET_PASSWORD=$MYPASS \

>  -e ADMIN_PASSWORD=$MYPASS \

>  --cap-add SYS_ADMIN \

>  --device /dev/fuse \

>  --name adb-free \

>  container-registry.oracle.com/database/adb-free:latest

Trying to pull container-registry.oracle.com/database/adb-free:latest...

Getting image source signatures

Copying blob 054518c1d5d2 done  

Copying blob 66cb99a7273e done  

Copying blob 0e3c46fdb0f9 done  

Copying config 0cadb9d2c5 done  

Writing manifest to image destination

ba5be3e6fcf3b16c054f8660400fbdcdd05898965411fe6345333ae726b24208

[azureuser@adb-free ~]$ podman ps

CONTAINER ID  IMAGE                                                   COMMAND     CREATED         STATUS                    PORTS                                                                                             NAMES

ba5be3e6fcf3  container-registry.oracle.com/database/adb-free:latest              10 seconds ago  Up 10 seconds (starting)  0.0.0.0:1521->1522/tcp, 0.0.0.0:1522->1522/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:27017->27017/tcp  adb-free

[azureuser@adb-free ~]$


少し待つとコンテナadb-freeのステータスがhealthyに変わります。

[azureuser@adb-free ~]$ podman ps

CONTAINER ID  IMAGE                                                   COMMAND     CREATED        STATUS                  PORTS                                                                                             NAMES

ba5be3e6fcf3  container-registry.oracle.com/database/adb-free:latest              3 minutes ago  Up 3 minutes (healthy)  0.0.0.0:1521->1522/tcp, 0.0.0.0:1522->1522/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:27017->27017/tcp  adb-free

[azureuser@adb-free ~]$ 


起動したORDSに接続します。

https://azure-adb-free:8443/ords/

自己署名証明書によってHTTPSにしているため、証明書のエラーが発生します。エラーを無視して、接続します。


ORDSのランディング・ページが開きます。


以上でMicrosoft Azureの仮想マシン上の作業は完了です。

クラウド・ウォレットwallet.zipの作成やOracle SQL Developer Extension for VS Codeからの接続は、Oracle Cloudのコンピュート・インスタンスのときと同じ作業で、クラウド・ウォレットを使った一般的な手順になります。

今回の記事は以上になります。