Oracle CloudでのUbuntu インスタンス上のOracle Cloud Agentのアップデート

Oracle Cloud上のUbuntuインスタンスにはOracle Cloud Agentがsnapパッケージでインストールされている。

ただ、ドキュメントにはインストール手法は解説があるが、アップデート手法について記載がない。

まずは、snapでインストールされているパッケージ一覧を出してみる

ubuntu@ubuntu:~$ snap list
Name                Version      Rev    Tracking         Publisher   Notes
core18              20211215     2289   latest/stable    canonical?  base
core20              20220114     1332   latest/stable    canonical?  base
lxd                 4.0.8        21843  4.0/stable/…     canonical?  -
oracle-cloud-agent  1.19.0-1130  31     latest/stable/…  oci.osi     classic
snapd               2.54.2       14553  latest/stable    canonical?  snapd
ubuntu@ubuntu:~$

次に「oracle-cloud-agent」について個別情報を取得

ubuntu@ubuntu:~$ snap info oracle-cloud-agent
name:      oracle-cloud-agent
summary:   Oracle Cloud Agent
publisher: Oracle Cloud Infrastructure (oci.osi)
store-url: https://snapcraft.io/oracle-cloud-agent
license:   unset
description: |
  Oracle Cloud Infrastructure agent for compute instance management and
  monitoring.
services:
  oracle-cloud-agent:                            simple, enabled, active
  oracle-cloud-agent.oracle-cloud-agent-updater: simple, enabled, active
snap-id:      ltx4XjES2e2ujitNIuO5GxPYDM6lp6ry
tracking:     latest/stable/ubuntu-20.04
refresh-date: 2022-02-15
channels:
  latest/stable:    1.22.0-2    2022-04-25 (37) 18MB classic
  latest/candidate: 1.22.0-2    2022-04-08 (37) 18MB classic
  latest/beta:      1.22.0-2    2022-04-08 (37) 18MB classic
  latest/edge:      ↑
installed:          1.19.0-1130            (31) 21MB classic
ubuntu@ubuntu:~$

installedが1.19.0-1130で、最新(latest)が1.22.0-2とアップデートが出ていることが分かる。

snapの更新は「sudo snap refresh」で行う。

ubuntu@ubuntu:~$ snap refresh
error: access denied (try with sudo)
ubuntu@ubuntu:~$ sudo snap refresh
Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" Handling re-refresh of "core18", "core20", "lxd", "oracle-cloud-agent", "snapd" 2022-05-06T07:14:40Z INFO Waiting for automatic snapd restart...
oracle-cloud-agent (stable/ubuntu-20.04) 1.22.0-2 from Oracle Cloud Infrastructure (oci.osi) refreshed
snapd 2.55.3 from Canonical? refreshed
core18 20220309 from Canonical? refreshed
core20 20220329 from Canonical? refreshed
lxd (4.0/stable) 4.0.9-8e2046b from Canonical? refreshed
ubuntu@ubuntu:~$

そして、パッケージ情報を取得し、更新されたことを確認する。

ubuntu@ubuntu:~$ snap list
Name                Version        Rev    Tracking         Publisher   Notes
core18              20220309       2349   latest/stable    canonical?  base
core20              20220329       1437   latest/stable    canonical?  base
lxd                 4.0.9-8e2046b  22761  4.0/stable/…     canonical?  -
oracle-cloud-agent  1.22.0-2       37     latest/stable/…  oci.osi     classic
snapd               2.55.3         15541  latest/stable    canonical?  snapd
ubuntu@ubuntu:~$ snap info oracle-cloud-agent
name:      oracle-cloud-agent
summary:   Oracle Cloud Agent
publisher: Oracle Cloud Infrastructure (oci.osi)
store-url: https://snapcraft.io/oracle-cloud-agent
contact:   oci_osi_grp@oracle.com
license:   unset
description: |
  Oracle Cloud Infrastructure agent for compute instance management and
  monitoring.
services:
  oracle-cloud-agent:                            simple, enabled, active
  oracle-cloud-agent.oracle-cloud-agent-updater: simple, enabled, active
snap-id:      ltx4XjES2e2ujitNIuO5GxPYDM6lp6ry
tracking:     latest/stable/ubuntu-20.04
refresh-date: today at 07:14 UTC
channels:
  latest/stable:    1.22.0-2 2022-04-25 (37) 18MB classic
  latest/candidate: 1.22.0-2 2022-04-08 (37) 18MB classic
  latest/beta:      1.22.0-2 2022-04-08 (37) 18MB classic
  latest/edge:      ↑
installed:          1.22.0-2            (37) 18MB classic
ubuntu@ubuntu:~$

IPv6アクセス可能なOracle Cloudインスタンスを作る

Oracle CloudのTokyoリージョンで、久しぶりにFree TierのARMインスタンスが作れるようになっていたので、最新の手順確認をしてみる。

前提条件: Oracle Cloud側の仮想クラウドネットワーク(VNC)は既にIPv6が有効化されていること。(参考資料:Oracle Cloudですでに作成済みのネットワークに対してIPv6を有効にする方法)

Oracle Cloudコンソール上のインスタンス設定での確認点

2022/05/06時点でも、インスタンス作成時はIPv6が有効化されていないので、手動でIPv6を使える様にする必要がある。

インスタンス詳細の「アタッチされたVNIC」を開いて確認する。

左下の[リソース]-[IPv6アドレス]を選択する

「IPv6アドレスの割当て」をクリック

特にこだわりがなければ、空欄のまま一番下にある「割当て」をクリック

これで設定上はIPv6アドレスが割り当てられた。

Ubuntu 20.04インスタンスの場合

Canonical-Ubuntu-20.04-aarch64-2022.02.15-0 で作成したインスタンスの場合、起動直後は以下の様な状態でした。

ubuntu@ubuntu:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:00:17:02:7d:5f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.220/24 brd 10.0.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::17ff:fe02:7d5f/64 scope link
       valid_lft forever preferred_lft forever
ubuntu@ubuntu:~$

IPv6を有効化してしばらく放置していたところ、下記の様に自動的にIPv6アドレスが追加されました。

ubuntu@ubuntu:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:00:17:02:7d:5f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.220/24 brd 10.0.0.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:5536/128 scope global dynamic noprefixroute
       valid_lft 7353sec preferred_lft 7053sec
    inet6 fe80::17ff:fe02:7d5f/64 scope link
       valid_lft forever preferred_lft forever
ubuntu@ubuntu:~$

OS再起動後もIPv6アドレス割当ては継続されていました。

Oracle Linux8インスタンスの場合

Oracle-Linux-8.5-aarch64-2022.03.17-1  を使用したところ、相変わらずfirewalldに対するdhcpv6-clientの許可が出されていないためIPv6アドレス取得が出来ない状態でした。

なので、「sudo firewall-cmd –permanent –add-service=dhcpv6-client」でルールを追加して、OS再起動で対応させました。

$ sudo firewall-cmd --permanent --add-service=dhcpv6-client
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
$

Oracle Cloud上のOracle Linux 8環境でレポジトリを追加する

Oracle Cloud上でOracle Linux 8を展開するとき、Oracleが提供するプラットフォームイメージ を使用する。

Oracle-Linux-8.5-aarch64-2022.03.17-1 を使用したところ、CLIのレポジトリ一覧表示に変化があった。

$ sudo dnf repolist --all
This system is receiving updates from OSMS server.
repo id                                  repo name                       status
ol8_addons-aarch64                       Oracle Linux 8 Add ons (aarch64 enabled
ol8_appstream-aarch64                    Oracle Linux 8 Application Stre enabled
ol8_baseos_latest-aarch64                Oracle Linux 8 BaseOS Latest (a enabled
ol8_ksplice-aarch64                      Ksplice for Oracle Linux 8 (aar enabled
ol8_mysql80-aarch64                      MySQL 8.0 for Oracle Linux 8 (a enabled
ol8_mysql80_connectors_community-aarch64 MySQL 8.0 Connectors for Oracle enabled
ol8_mysql80_tools_community-aarch64      MySQL 8.0 Tools Community for O enabled
ol8_oci_included-aarch64                 Oracle Software for OCI users o enabled
$

「This system is receiving updates from OSMS server.」というメッセージが追加されていて、有効化されているレポジトリしか表示されていない。

OSMSというのはOS Management System(OS管理) のことで、2020年ぐらいから組み込みが開始されていたもののレポジトリ管理までは行っていなかったものとなる。

リリース情報を確認すると2021年10月に関連する記載があった。


10月Oracle Linux 8プラットフォーム・イメージでデフォルトで有効になっているOS管理サービス・エージェント・プラグイン

2021年10月にリリースされたOracle Linux 8プラットフォーム・イメージ以降、Oracle Linux 8インスタンスのOracle Cloud Agent 1.16.0でOS管理サービス・エージェント・プラグインがデフォルトで有効になっています。

2021年10月(Oracle Cloud Agent 1.15.0以前を実行)より前に起動されたOracle Linux 8インスタンスの場合、OS管理サービス・エージェント・プラグインはデフォルトで無効になっています。無効化されたOracle Linux 8インスタンスのOS管理サービス・エージェント・プラグインは、Oracle Cloud Agent 1.16.0への更新後も無効のままです。

詳細は、OS管理の開始を参照してください。


ただ、「OS管理の開始 – 前提条件」には「OS管理は、Oracle Cloud Free Tierでは使用できません。」

使えてしまっている現状は正しいのか、誤りなのか、なやむところです・・・

それはさておき、「This system is receiving updates from OSMS server.」が表示される場合のレポジトリ追加は、まずは、Oracle Cloudのコンソール画面から実施する。

[インスタンスの詳細]-[OS管理]を開くと、パッチの状況が確認できる

レポジトリを追加する場合は「…」をクリックして表示される「OS管理詳細の表示」を選択する

[OS管理の詳細]で[ソフトウェア・ソース]を選択すると、現在enabledとなっているレポジトリ一覧が確認できる。

レポジトリを追加するには、ここの「追加」をクリックする。

追加したいレポジトリを選択し「追加」する。

一覧に追加されたことを確認します。

もちろんコマンドで確認しても追加されています。

$ sudo dnf repolist --all
This system is receiving updates from OSMS server.
repo id                                  repo name                       status
ol8_addons-aarch64                       Oracle Linux 8 Add ons (aarch64 enabled
ol8_appstream-aarch64                    Oracle Linux 8 Application Stre enabled
ol8_baseos_latest-aarch64                Oracle Linux 8 BaseOS Latest (a enabled
ol8_developer_epel-aarch64               Oracle Linux 8 EPEL Packages fo enabled
ol8_ksplice-aarch64                      Ksplice for Oracle Linux 8 (aar enabled
ol8_mysql80-aarch64                      MySQL 8.0 for Oracle Linux 8 (a enabled
ol8_mysql80_connectors_community-aarch64 MySQL 8.0 Connectors for Oracle enabled
ol8_mysql80_tools_community-aarch64      MySQL 8.0 Tools Community for O enabled
ol8_oci_included-aarch64                 Oracle Software for OCI users o enabled
$

Oracle Cloud上のOracle Linux 7インスタンスでyum check-updateを実行した際にELBA-2021-9629,ELBA-2021-9631のメッセージが出力される

Oracle Cloud上のOracle Linux 7インスタンスでyum check-updateを実行したところ、下記の様なメッセージが出力された。

[osakanataro@ocilinux ~]$ sudo yum check-update
読み込んだプラグイン:langpacks, ulninfo
Update notice ELBA-2021-9629 (ol7_developer から) is broken, or a bad duplicate, skipping.
You should report this problem to the owner of the ol7_developer repository.
To help pinpoint the issue, please attach the output of "yum updateinfo --verbose" to the report.
Update notice ELBA-2021-9631 (ol7_developer から) is broken, or a bad duplicate, skipping.
Security: kernel-uek-4.14.35-2047.510.5.2.el7uek.x86_64 is an installed security update
Security: kernel-uek-4.14.35-2047.504.2.el7uek.x86_64 is the currently running version
[osakanataro@ocilinux ~]$

とりあえず、出力にかいてある「yum updateinfo –verbose」を実行してみる。

[osakanataro@ocilinux ~]$ sudo yum updateinfo --verbose
無効になっているため、プラグイン「osmsplugin」は読み込みません
無効になっているため、プラグイン「rhnplugin」は読み込みません
プラグイン「ulninfo」を読み込んでいます
プラグイン「langpacks」を読み込んでいます
Adding en_US.UTF-8 to language list
Config time: 0.091
Yum version: 3.4.3
rpmdb time: 0.000
Setting up Package Sacks
pkgsack time: 0.255
Duplicate of ELBA-2021-9629 differs in some fields:
<<<<<<< ol7_developer:description
'[2.53.1-1]\n- Update to version 2.53.1\n\n[2.53.0-1]\n- Update to version 2.53.0\n\n[2.52.1-1]\n- Update to version 2.52.1\n\n[2.52.0-1]\n- Update to version 2.52.0\n\n[2.51.0-1]\n- Update to version 2.51.0\n\n[2.50.0-1]'
=======
'[2.53.1-1]\n- Update to version 2.53.1'
>>>>>>> ol7_addons:description
Update notice ELBA-2021-9629 (ol7_developer から) is broken, or a bad duplicate, skipping.
You should report this problem to the owner of the ol7_developer repository.
To help pinpoint the issue, please attach the output of "yum updateinfo --verbose" to the report.
Duplicate of ELBA-2021-9631 differs in some fields:
<<<<<<< ol7_developer:description
'[3.4.1-1]\n- Update to version 3.4.1\n\n[3.4.0-1]\n- Update to version 3.4.0\n\n[3.3.3-1]\n- Update to version 3.3.3\n\n[3.3.2-1]\n- Update to version 3.3.2\n\n[3.3.1-1]\n- Update to version 3.3.1\n\n[3.3.0-1]\n- Update to version 3.3.0\n\n[3.2.2-1]\n- Update to version 3.2.2\n\n[3.2.1-1]\n- Update to version 3.2.1\n\n[3.2.0-1]\n- Update to version 3.2.0\n\n[3.1.2-1]\n- Update to version 3.1.2\n\n[3.1.1-1]\n- Update to version 3.1.1\n\n[3.1.0-1]\n- Update to version 3.1.0\n\n[3.0.5-1]\n- Update to version 3.0.5\n\n[3.0.4-1]\n- Update to version 3.0.4\n\n[3.0.3-1]\n- Update to version 3.0.3\n\n[3.0.2-1]\n- Update to version 3.0.2\n\n[3.0.1-1]\n- Update to version 3.0.1\n\n[3.0.0-1]'
=======
'[3.4.1-1]\n- Update to version 3.4.1'
>>>>>>> ol7_addons:description
Update notice ELBA-2021-9631 (ol7_developer から) is broken, or a bad duplicate, skipping.
updateinfo time: 5.586
オブジェクトの更新を構築しています
up:Obs Init time: 4.605
up:simple updates time: 0.024
up:obs time: 0.008
up:condense time: 0.000
updates time: 10.097
Security: kernel-uek-4.14.35-2047.510.5.2.el7uek.x86_64 is an installed security update
Security: kernel-uek-4.14.35-2047.504.2.el7uek.x86_64 is the currently running version
updateinfo summary done
[osakanataro@ocilinux ~]$ 

よくわからん。

該当するErattaは下記と
ELBA-2021-9629 – python-oci-sdk bug fix update
ELBA-2021-9631 – python-oci-cli bug fix update

特に解決につながりそうな情報はない。

レポジトリ一覧を取得してみる

[osakanataro@ocilinux ~]$ 
 yum repolist all
読み込んだプラグイン:langpacks, ulninfo
リポジトリー ID                      リポジトリー名                                                                                               状態
ol7_MODRHCK/x86_64                   Latest RHCK with fixes from Oracle for Oracle Linux 7Server (x86_64)                                         無効
ol7_UEKR3/x86_64                     Latest Unbreakable Enterprise Kernel Release 3 for Oracle Linux 7Server (x86_64)                             無効
ol7_UEKR3_OFED20/x86_64              OFED supporting tool packages for Unbreakable Enterprise Kernel on Oracle Linux 7 (x86_64)                   無効
ol7_UEKR4/x86_64                     Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64)                             無効
ol7_UEKR4_OFED/x86_64                OFED supporting tool packages for Unbreakable Enterprise Kernel Release 4 on Oracle Linux 7 (x86_64)         無効
ol7_UEKR4_archive/x86_64             Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64) - Archive                          無効
ol7_UEKR5/x86_64                     Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86_64)                             有効:           592
ol7_UEKR5_RDMA/x86_64                Oracle Linux 7 UEK5 RDMA (x86_64)                                                                            無効
ol7_UEKR5_archive/x86_64             Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86_64) - Archive                          無効
ol7_UEKR6/x86_64                     Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 7Server (x86_64)                             無効
ol7_UEKR6_RDMA/x86_64                Oracle Linux 7 UEK6 RDMA (x86_64)                                                                            無効
ol7_addons/x86_64                    Oracle Linux 7Server Add ons (x86_64)                                                                        有効:           579
ol7_developer/x86_64                 Oracle Linux 7Server Development Packages (x86_64)                                                           有効:   1,571+1,295
ol7_developer_EPEL/x86_64            Oracle Linux 7Server EPEL Packages for Development (x86_64)                                                  有効: 28,888+12,373
ol7_developer_UEKR5/x86_64           Oracle Linux 7Server Unbreakable Enterprise Kernel Release 5  Packages for Development and test (x86_64)     無効
ol7_developer_UEKR6/x86_64           Developer Preview of UEK Release 6 (x86_64)                                                                  無効
ol7_developer_kvm_utils/x86_64       Oracle Linux 7Server KVM Utilities for Development and test (x86_64)                                         無効
ol7_developer_php70/x86_64           Oracle Linux 7Server PHP 7.0 Packages for Development and test (x86_64)                                      無効
ol7_developer_php71/x86_64           Oracle Linux 7Server PHP 7.1 Packages for Development and test (x86_64)                                      無効
!ol7_developer_php72/x86_64          Oracle Linux 7Server PHP 7.2 Packages for Development and test (x86_64)                                      無効
ol7_developer_php74/x86_64           Oracle Linux 7Server PHP 7.4 Packages for Development and test (x86_64)                                      有効:           806
ol7_ksplice                          Ksplice for Oracle Linux 7Server (x86_64)                                                                    有効:        19,729
ol7_kvm_utils/x86_64                 Oracle Linux 7Server KVM Utilities (x86_64)                                                                  無効
ol7_latest/x86_64                    Oracle Linux 7Server Latest (x86_64)                                                                         有効:        23,697
ol7_latest_archive/x86_64            Oracle Linux 7Server Latest (x86_64) - Archive                                                               無効
ol7_leapp/x86_64                     Leapp Upgrade Utilities for Oracle Linux 7Server (x86_64)                                                    無効
ol7_optional_archive/x86_64          Oracle Linux 7Server Optional (x86_64) - Archive                                                             無効
ol7_optional_latest/x86_64           Oracle Linux 7Server Optional Latest (x86_64)                                                                有効:        16,690
ol7_security_validation/x86_64       Oracle Linux 7Server Update 3 (x86_64) Security Validations                                                  無効
ol7_software_collections/x86_64      Software Collection Library release 3.0 packages for Oracle Linux 7 (x86_64)                                 有効:        17,074
ol7_u0_base/x86_64                   Oracle Linux 7Server GA installation media copy (x86_64)                                                     無効
ol7_u1_base/x86_64                   Oracle Linux 7Server Update 1 installation media copy (x86_64)                                               無効
ol7_u2_base/x86_64                   Oracle Linux 7Server Update 2 installation media copy (x86_64)                                               無効
ol7_u3_base/x86_64                   Oracle Linux 7Server Update 3 installation media copy (x86_64)                                               無効
ol7_u4_base/x86_64                   Oracle Linux 7Server Update 4 installation media copy (x86_64)                                               無効
ol7_u5_base/x86_64                   Oracle Linux 7Server Update 5 installation media copy (x86_64)                                               無効
ol7_u6_base/x86_64                   Oracle Linux 7Server Update 6 installation media copy (x86_64)                                               無効
ol7_u7_base/x86_64                   Oracle Linux 7Server Update 7 installation media copy (x86_64)                                               無効
ol7_u8_base/x86_64                   Oracle Linux 7Server Update 8 installation media copy (x86_64)                                               無効
ol7_u8_security_validation/x86_64    Oracle Linux 7Server Update 8 (x86_64) Security Validations                                                  無効
ol7_u9_base/x86_64                   Oracle Linux 7Server Update 9 installation media copy (x86_64)                                               無効
ol7_x86_64_userspace_ksplice         Ksplice aware userspace packages for Oracle Linux 7Server (x86_64)                                           無効
packages-microsoft-com-prod          packages-microsoft-com-prod                                                                                  有効:         1,085
repolist: 110,711
[osakanataro@ocilinux ~]$ $ ls /etc/yum.repos.d/
ksplice-ol7.repo               oracle-linux-ol7.repo.20200710      oracle-softwarecollection-ol7.repo.bkp         uek-ol7.repo.20200406
microsoft.repo                 oracle-linux-ol7.repo.bkp           oracle-softwarecollection-ol7.repo.rpmnew.bkp  uek-ol7.repo.bkp
oracle-epel-ol7.repo           oracle-linux-ol7.repo.rpmnew.bkp    oraclelinux-developer-ol7.repo                 uek-ol7.repo.rpmnew.bkp
oracle-epel-ol7.repo.20190815  oracle-php-ol7.repo                 oraclelinux-developer-ol7.repo.20200406        virt-ol7.repo
oracle-epel-ol7.repo.20210217  oracle-php-ol7.repo.20200406        public-yum-ol7.repo.sav                        virt-ol7.repo.bkp
oracle-linux-ol7.repo          oracle-softwarecollection-ol7.repo  uek-ol7.repo                                   virt-ol7.repo.rpmnew.bkp
[osakanataro@ocilinux ~]$

レポジトリがいろいろあるけど、ファイルはもっと多いなぁ・・・なんでだっけ?と記録を漁ったところ2021年6月に行った「Oracle Cloud上の古いOracle Linux 7インスタンスのyum設定を更新する」でのレポジトリ設定更新によるものだった。(Oracle側の記載は 2021.03 – Oracle Linux 7およびOracle Linux 8インスタンスのYumの更新 )

パッケージ情報捜索

ELBA-2021-9629のpython-oci-sdk

[osakanataro@ocilinux ~]$ yum info python-oci-sdk
読み込んだプラグイン:langpacks, ulninfo
利用可能なパッケージ
名前                : python-oci-sdk
アーキテクチャー    : x86_64
バージョン          : 2.36.0
リリース            : 1.el7
容量                : 15 M
リポジトリー        : ol7_developer/x86_64
要約                : Oracle Cloud Infrastructure Python SDK
URL                 : http://pypi.python.org/pypi/oci
ライセンス          : Apache2.0
説明                : Python SDK for Oracle Cloud Infrastructure.

[osakanataro@ocilinux ~]$ rpm -qa|grep oci-sdk
python36-oci-sdk-2.54.0-1.el7.x86_64
[osakanataro@ocilinux ~]$

ELBA-2021-9631のpython-oci-cli

[osakanataro@ocilinux ~]$ yum info python-oci-cli
読み込んだプラグイン:langpacks, ulninfo
利用可能なパッケージ
名前                : python-oci-cli
アーキテクチャー    : noarch
バージョン          : 2.9.0
リリース            : 1.el7
容量                : 1.2 M
リポジトリー        : ol7_developer/x86_64
要約                : Oracle Cloud Infrastructure CLI client
URL                 : http://pypi.python.org/pypi/oci-cli
ライセンス          : Apache2.0
説明                : Python SDK for Oracle Cloud Infrastructure command line client utilities.

[osakanataro@ocilinux ~]$ rpm -qa|grep oci-cli
python36-oci-cli-3.4.2-1.el7.noarch
[osakanataro@ocilinux ~]$

どちらもレポジトリにあるパッケージバージョンより新しいものがインストールされている状態になっている。

そういえば、いつだったかメンテナンスした時に、oci-sdkとoci-cliが古かったのでバージョンアップしたんだっけ、という思い出したので、状況はあるいみ解決した。

https://github.com/oracle/oci-cli/releases

Oracle Linux 8でphp 7.4.19-1にアップデート後からphp-fpmが起動しなくなった

Oracle Cloud上にARMインスタンスをたててOracle Linux 8をインストールしてwordpressサーバの運用を開始した。

ところが今日の朝実行された dnf automaticによる自動更新後、wordpressが「Service Unavailable」となり表示出来ない。

sshログインして確認するとphp-fpmが起動していない。

[root@retoge ~]# systemctl status php-fpm|cat
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2021-11-18 09:25:41 JST; 16s ago
  Process: 482320 ExecStart=/usr/sbin/php-fpm --nodaemonize (code=exited, status=127)
 Main PID: 482320 (code=exited, status=127)

Nov 18 09:25:41 retoge systemd[1]: Starting The PHP FastCGI Process Manager...
Nov 18 09:25:41 retoge php-fpm[482320]: /usr/sbin/php-fpm: error while loading shared libraries: cannot restore segment prot after reloc: Permission denied
Nov 18 09:25:41 retoge systemd[1]: php-fpm.service: Main process exited, code=exited, status=127/n/a
Nov 18 09:25:41 retoge systemd[1]: php-fpm.service: Failed with result 'exit-code'.
Nov 18 09:25:41 retoge systemd[1]: Failed to start The PHP FastCGI Process Manager.
[root@retoge ~]#

SELinuxの問題で起動していなさそうなので/var/log/audit/audit.log を確認してみると下記の出力があった。

type=AVC msg=audit(1637195141.234:5827): avc:  denied  { execmod } for  pid=482320 comm="php-fpm" path="/usr/sbin/php-fpm" dev="dm-0" ino=369761 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_exec_t:s0 tclass=file permissive=0

type=SERVICE_START msg=audit(1637195141.238:5828): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=php-fpm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'^]UID="root" AUID="unset"

関連していそうなファイルのセキュリティコンテキストを確認

[root@retoge ~]# ls -lZ /usr/sbin/php-fpm
-rwxr-xr-x. 1 root root system_u:object_r:httpd_exec_t:s0 4656056 Oct 12 18:47 /usr/sbin/php-fpm
[root@retoge ~]# restorecon -R -v /usr/sbin
[root@retoge ~]# ls -lZ /usr/sbin/php-fpm
-rwxr-xr-x. 1 root root system_u:object_r:httpd_exec_t:s0 4656056 Oct 12 18:47 /usr/sbin/php-fpm
[root@retoge ~]# ls -lZ /usr/lib/systemd/systemd
-rwxr-xr-x. 1 root root system_u:object_r:init_exec_t:s0 1528680 Nov 11 09:41 /usr/lib/systemd/systemd
[root@retoge ~]# restorecon -R -v /usr/lib
[root@retoge ~]# ls -lZ /usr/lib/systemd/systemd
-rwxr-xr-x. 1 root root system_u:object_r:init_exec_t:s0 1528680 Nov 11 09:41 /usr/lib/systemd/systemd
[root@retoge ~]#

特に問題はなさそう?

ぐぐった時に出てきた「Bug 1670386 – AVC denied httpd_execmem for php-fpm when php-opcache is installed」が近いかな?と httpdのhttpd_execmemをonに変えてみたけど、これだけではダメな模様(後述のaudit2allowの結果を見ると、これ自体は必要そうでした)

[root@retoge ~]# getsebool httpd_execmem
httpd_execmem --> off
[root@retoge ~]# setsebool -P httpd_execmem on
[root@retoge ~]# getsebool httpd_execmem
httpd_execmem --> on
[root@retoge ~]# 
[root@retoge ~]# systemctl start php-fpm
Job for php-fpm.service failed because the control process exited with error code.
See "systemctl status php-fpm.service" and "journalctl -xe" for details.
[root@retoge ~]# systemctl restart httpd
[root@retoge ~]# systemctl start php-fpm
Job for php-fpm.service failed because the control process exited with error code.
See "systemctl status php-fpm.service" and "journalctl -xe" for details.
[root@retoge ~]#

今回はとりあえずphp-fpmが動けばいいか、ということで、問題となっているものを無視して起動できるようにしてしまうことにした。

まず、ausearchコマンドで関係するものをピックアップして、audit2allowで作成される予定のルールを確認する。

[root@retoge ~]# ausearch -m AVC |grep php| audit2allow


#============= httpd_t ==============

#!!!! This avc is allowed in the current policy
allow httpd_t http_port_t:tcp_socket name_connect;
allow httpd_t httpd_exec_t:file execmod;

#!!!! This avc can be allowed using the boolean 'httpd_unified'
allow httpd_t httpd_sys_content_t:dir write;

#!!!! This avc can be allowed using the boolean 'httpd_unified'
allow httpd_t httpd_sys_content_t:file write;
[root@retoge ~]#

これをモジュール化して組み込みます。

[root@retoge ~]# ausearch -m AVC |grep php| audit2allow -M php-fpm
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i php-fpm.pp

[root@retoge ~]# ls -l php-fpm*
-rw-r--r--. 1 root root 1594 Nov 18 09:51 php-fpm.pp
-rw-r--r--. 1 root root  597 Nov 18 09:51 php-fpm.te
[root@retoge ~]#

[root@retoge ~]# semodule -l |grep php
[root@retoge ~]# semodule -i php-fpm.pp
[root@retoge ~]# semodule -l |grep php
php-fpm
[root@retoge ~]#

php-fpmを起動してみます。

[root@retoge ~]# systemctl start php-fpm
[root@retoge ~]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-11-18 09:53:45 JST; 5s ago
 Main PID: 489019 (php-fpm)
   Status: "Ready to handle connections"
    Tasks: 6 (limit: 36876)
   Memory: 24.1M
   CGroup: /system.slice/php-fpm.service
           tq489019 php-fpm: master process (/etc/php-fpm.conf)
           tq489020 php-fpm: pool www
           tq489021 php-fpm: pool www
           tq489022 php-fpm: pool www
           tq489023 php-fpm: pool www
           mq489024 php-fpm: pool www

Nov 18 09:53:45 retoge systemd[1]: Starting The PHP FastCGI Process Manager...
Nov 18 09:53:45 retoge systemd[1]: Started The PHP FastCGI Process Manager.
[root@retoge ~]#

正常に起動が成功し、wordpressの動作も正常となりました。


2022/01/20追記

放置していたサーバでも発生していたので対処したところ、httpd_execmem有効化とselinuxモジュール追加で動き出しました

[root@retoge ~]# getsebool httpd_execmem
httpd_execmem --> off
[root@retoge ~]# setsebool -P httpd_execmem on
[root@retoge ~]# getsebool httpd_execmem
httpd_execmem --> on
[root@retoge ~]# ausearch -m AVC |grep php |audit2allow


#============= httpd_t ==============
allow httpd_t httpd_exec_t:file execmod;
[root@retoge ~]# ausearch -m AVC |grep php |audit2allow -M php-fpm
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i php-fpm.pp
[root@retoge ~]# semodule -i php-fpm.pp
[root@retoge ~]# systemctl start php-fpm
[root@retoge ~]#