Oracle Cloud [OCI]: Computeのcloud-initを使ってCentOS Streamインスタンスを作成する


Oracle CloudのComputeインスタンスには、様々なイメージが用意されていますが、
2021/1/17時点ではCentOS Streamのイメージが用意されていません。

そのため、CentOS8のComputeインスタンスを作成し、cloud-initでアップデートを行うことでCentOS Streamを使用します。
いつもComputeインスタンスを作成する時とほぼ変わらず、とても簡単に作成できました。

なお、OCIの初期設定をする際のcloud-initの使い方はこちらの記事がとてもわかりやすく、参考にさせていただきました。

■参考にさせて頂いた記事
cloud-initでOCI Computeの初期設定を済ませる

作業手順

1.Computeインスタンス作成
 1-1.イメージ変更 CentOS8を選択
 1-2.ネットワーキングの構成
 1-3.cloud-initの設定
2.動作確認

今回使用したサービスと技術

・OCI Compute
・cloud-init
・CentOS Stream

著者の環境

Mac OS X 10.15.7

1.Computeインスタンスの作成

Computeインスタンスを作成します。
今回は「VM.Standard.E3.Flex 1コアOCPU、16 GBメモリー、1 Gbpsネットワーク帯域幅」にて作成しました。

1-1.イメージの変更

デフォルトの「Oracle Linux 7.9」ではなく、「CentOS8」を選択します。

1-2.ネットワーキングの構成

今回はあらかじめ登録してあるVCN,パブリック・サブネットを選択し、バプリックIPアドレスを付与しています。

1-3.cloud-initの設定

「拡張オプションの表示」をクリックし、拡張オプションを表示します。

拡張オプションの「管理」タブにある「初期化スクリプト」の「Cloud-initスクリプトの貼付け」を選択します。
cloud-initスクリプトの入力欄に下記のスクリプトを貼り付けます。

cloud-initはroot権限で実行されるため、sudo無しで問題ありません。
コマンド実行中は途中で[Y/N]の入力を求められるため、全て[-y]オプションを付けています。

#!/bin/bash
dnf install centos-release-stream -y
dnf swap centos-{linux,stream}-repos -y
dnf distro-sync -y

cloud-init入力後、「作成」をクリックし、インスタンスが作成されるまで待ちます。

2.動作確認

インスタンスの状態が「起動中」になり、数分以上経過してから動作確認をしました。

sshで作成したインスタンスにログインします。
下記のコマンドを入力し、「CentOS Stream release 8」と表示されることを確認します。

cat /etc/centos-release
CentOS Stream release 8

cloud-init実行時のログは下記に保存されています。

/var/log/cloud-init-output.log

ログを確認すると、下記のログが出力されますが、
osmspluginはOracle Linux 6/7/8で使用するプラグインのため、影響はありません。
Failed loading plugin "osmsplugin": No module named 'librepo'

以下のような行が表示されると、cloud-initの処理完了です。

Cloud-init v. 19.4 running 'modules:final' at Sun, 17 Jan 2021 14:54:04 +0000. Up 28.87 seconds.
Cloud-init v. 19.4 finished at Sun, 17 Jan 2021 15:00:08 +0000. Datasource DataSourceOracle.  Up 393.38 seconds

参考

■cloud-init公式マニュアル
cloud-init Documentation

再掲

■参考にさせて頂いた記事
cloud-initでOCI Computeの初期設定を済ませる