【旧版】Oracle Cloud InfrastructureでOS Management Serviceがリリースされたよ

<font color="red">この記事の執筆後にマニュアルが改訂され、内容が大幅に拡充された。実験的な内容は無駄ではないし、機能に対する理解は間違っていなかった。そこで、こちらは【旧版】として残し、新たな記事を別に書いた。

* [【改訂】Oracle Cloud InfrastructureでOS Management Serviceがリリースされたよ](https://qiita.com/yamada-hakase/items/a674994c3824706b649e)


# 0. 前提条件

* Oracle Cloud Infrastructure Compute
* Oracle Linux 6, 7, 8

# 1. OS Management Serviceがリリース！

Linux好きの筆者にとって興味のあった**<font color="red">Oracle Autonomous Linux</font>**。世界で一番早く一番詳しい記事を書いた、と勝手に思っている。

* [Oracle Autonomous Linuxをハックする Part 1](https://qiita.com/yamada-hakase/items/3b29b49703d2c807349b), [Part 2](https://qiita.com/yamada-hakase/items/b735ec62ddcb38eb19f5), [Part 3](https://qiita.com/yamada-hakase/items/f613ef367bd5ddfee987)

そして、ついに待望の**OS Management Service**がリリースされた。

* 2019/12/17 [OS Management Service Released](https://docs.cloud.oracle.com/iaas/releasenotes/changes/78459b02-dafa-4db8-b84a-9f6f295140af/)

ただし、以下のドキュメントを見ると「東京リージョン」は含まれていない。

* [In an Industry First, Oracle Brings Autonomous Operation to Linux](https://community.oracle.com/docs/DOC-1033577)

> OS Management Service is currently generally available in the following Oracle Cloud Infrastructure regions: US East (Ashburn), US West (Phoenix), Canada Southeast (Toronto), UK South (London), Germany Central (Frankfurt). 


# 2. マニュアルを眺める

マニュアル「[Overview of OS Management](https://docs.cloud.oracle.com/iaas/os-management/index.html)」が公開されているので、サクッと眺めてみよう。

> The Oracle Cloud Infrastructure OS Management service provides tools for common operating system management tasks for Compute instances, focusing initially on managing software packages for Oracle Linux instances.

<font color="blue">OS Management Serviceは、Computeインスタンスのオペレーティング・システム管理ツールで、最初はLinuxインスタンスのパッケージ管理機能を提供する。</font>

気になるところをピックアップすると以下のとおり。

* OS Management ServiceでComputeを管理するには、OS Management Agentのインストールが必要
* OS Management Serviceを有効にすると、Computeにインストールしたパッケージを参照／追加／更新／削除できる
* OS Management Service管理下のインスタンスは、個別もしくはグループ化して管理できる
* Computeインスタンスのパッケージ管理は、ジョブとして即時実行やスケジュール実行（1回、定期間隔）ができる
* OS Management Service管理下のインスタンスは独自のリポジトリを参照し、リポジトリはルート・コンパートメントに配置される
* <font color="red">対象のOSは、Oracle Linux 6, 7, 8</a>
* インスタンスをOS Management Serviceに登録すると、既存のYumリポジトリは無効化される。再度有効にするには設定が必要
* テナントで最初にOS Management Serviceを利用するときは、インスタンスを登録してから60分から90分かかる。利用できるようになるとメールが送られてくる

**<font color="blue">「あれっ、OS Management ServiceはOracle Autonomous Linux固有の機能じゃないの？」**

ほとんどの機能は想定内だが、一番驚いたのはOracle Autonomous Linux以外もサポートされることだ（あとで、このことも覆る）。

# 3. Oracle Autonomous Linuxインスタンスの作成

最初はろくにマニュアルを読まなかったこともあり、早速PhoenixでOracle Autonomous Linuxインスタンスを作成する。

以前と作成画面の違いは以下の点だ。

* Oracle Autonomous Linuxは、Oracle ImagesではなくPlatform Imagesから選択する
* ページ下方の**[Show Advanced Options]**をクリックすると**[Use Oracle Cloud Agent to mange this instance]**が表示されること。東京リージョンなど非サポートリージョンでは表示されない

![autonomous11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266049/50c1bef7-604e-e396-3201-f0491ecc823a.png)

ログインすると、いきなりNotificationsとの連係を促すメッセージが表示された。

```shell-session
Welcome to Autonomous Linux
Effective kernel version is 4.14.35-1902.8.4.el7uek.x86_64
Please add OCI notification service topic OCID with
$ sudo al-config -T [topic OCID] ★この行までがログインメッセージ
[ opc@hostname ~]$
```

[Part 1](https://qiita.com/yamada-hakase/items/3b29b49703d2c807349b)でNotificationsの事前準備は終わっているので早速実行。成功すると、メールが送信されてくる。

```shell-session
$ sudo al-config -T ＜トピックのOCID＞
```

# 4. OS Management Serviceを使う

準備が整ったので、目的のOS Management Serviceを使ってみよう。

### 4-1. OS Management Agentのインストール

マニュアルに書いてあるとおりに`osms-agent`をインストールする。<font color="red">あれっ、パッケージがない。</font>

```shell-session
$ sudo yum install osms-agent
Loaded plugins: langpacks, ulninfo
No package osms-agent available. ★無いと言っている
Error: Nothing to do
```

`yum search`や`yum list available`を使っても見つからない。ひょっとしてYumリポジトリへのアップロードが遅れているのか？　それともリポジトリのインデックス・ビルド忘れか？ などとブツブツ。

<font color="blue">ひょっとしてol7_ociyum_configリポジトリにあるのでは？</font>

リポジトリの詳細は、[こちらのエントリ](https://qiita.com/yamada-hakase/items/172e2d08ea71a16ed7a2)を参照。OCI固有のリポジトリで、通常は認証が必要なものが公開されている。なおol7_ociyum_configとoci_yum_includedは同じリポジトリで名前が違うだけだ。


```shell-session
$ sudo yum repolist all
Loaded plugins: langpacks, ulninfo
repo id                        repo name                           status
al7/x86_64                     Autonomous Linux 7Server (x86_64)   enabled: 1569
★中略
ol7_latest/x86_64              Oracle Linux 7Server Latest (x86_64 disabled
ol7_latest_archive/x86_64      Oracle Linux 7Server Latest (x86_64 disabled
ol7_ociyum_config              OCI specific release packages Oracl disabled　★こいつ
```

<font color="blue">**イェーイ、ビンゴ！！！　**</font>ol7_ociyum_configにあった。

```shell-session
$ sudo yum --enablerepo=ol7_ociyum_config search osms-agent
Loaded plugins: langpacks, ulninfo
=========================== N/S matched: osms-agent ============================
osms-agent.x86_64 : OS Management Service Agent

  Name and summary matches only, use "search all" for everything.
```

osms-agentをインストールする。

```shell-session
$ sudo yum --enablerepo=ol7_ociyum_config install osms-agent -y
```

**Oracle Autonomous Linux 7の場合**
何だかメッセージが表示される。Oracle Autonomous Linuxのコア・パッケージal-configと両立できない？

```shell-session
Running transaction
  Installing : osms-agent-0.0.1-444.el7.x86_64                              1/1
OSMS Agent: Not permitted to run: "al-config" package is present
  Verifying  : osms-agent-0.0.1-444.el7.x86_64                              1/1

Installed:
  osms-agent.x86_64 0:0.0.1-444.el7

Complete!
```

インストールできたがサービスは停止している。

```shell-session
$ sudo systemctl is-active osms-agent
inactive
```

**Oracle Linux 7の場合**
Oracle Linux 7にインストールするとメッセージは表示されない。osms-agentを提供するリポジトリはデフォルトで有効なので、明示的に有効にする必要は無い。

```shell-session
$ sudo yum install osms-agent -y
★中略
Running transaction
  Installing : osms-agent-0.0.1-444.el7.x86_64                                  1/1
  Verifying  : osms-agent-0.0.1-444.el7.x86_64                                  1/1

Installed:
  osms-agent.x86_64 0:0.0.1-444.el7

Complete!
```

osms-agentサービスは起動している。

```shell-session
$ sudo systemctl is-active osms-agent
active
```

Oracle Linux 7ではインストールに成功したが`/var/log/messages`にはエラーが出まくっている。また「OS Management Serviceの登録に成功した」メールも来ない。管理コンソールをみてもダメっぽい。
![osmanage01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266049/ce44088a-db5b-2c62-1db2-b36565062784.png)

**<font color="red">いろいろ試したけれどNG。ひょっとしてバグ？ それとも何か足りない？</font>**


現在のパッケージ情報はこちら。なんと「0.0.1」というプロダクションとは思えないバージョン番号。さらにVendorは通常「Oracle America」なのに個人IDっぽい。個人の環境でビルドしている？

```
$ rpm -qi osms-agent
Name        : osms-agent
Version     : 0.0.1　★！！！
Release     : 444.el7
Architecture: x86_64
Install Date: Wed 18 Dec 2019 11:42:07 PM JST
Group       : default
Size        : 50250298
License     : https://oss.oracle.com/licenses/upl/
Signature   : RSA/SHA256, Fri 13 Dec 2019 07:30:36 AM JST, Key ID 72f97b74ec551f03
Source RPM  : osms-agent-0.0.1-444.el7.src.rpm
Build Date  : Fri 13 Dec 2019 05:01:24 AM JST
Build Host  : a44c08b17889
Relocations : /
Packager    : <@a44c08b17889>
Vendor      : @a44c08b17889　★おかしい
URL         : https://docs.cloud.oracle.com/iaas/
Summary     : OS Management Service Agent
Description :
OS Management Service Agent
```

### 4-2. ここまでのまとめ

冷静に考えれば、Oracle Autonomous Linuxは毎日アップデートを適用する仕組みだ。それに対してOS Management Serviceは、ある程度のサーバをまとめて、定期／不定期に管理する仕組みに思える。

**つまり相反する思想である。**

OS Management ServiceはOracle Autonomous Linux専用のサービスだと思っていたけれど、どうやら勘違いだったようだ。

# 5. まとめ（仮）
まだ使えていないので、まとめを書くのは早急だが、推測を含めて書いてみる。

* **<font color="blue">OS Management ServiceはOracle Linux 6, 7, 8を対象としたサービス。Oracle Autonomous Linuxは対象外</font>**
* **<font color="blue">複数のサーバー群をまとめたパッケージ管理ができる</font>**

「OS Management Service管理下のインスタンスは独自のリポジトリを参照し、リポジトリはルート・コンパートメントに配置される」という記述から

* **<font color="blue">OS Management Serviceは、[Red Hat Satellite](https://www.redhat.com/ja/technologies/management/satellite)や、そのクローンである[Spacewalk](https://spacewalkproject.github.io/)のようなパッケージ管理ツール</font>**

と推測できる。マニュアルには**focusing initially**と書いていたので、今後は拡張するのだろうけど。