Conoha VPS: OpenBSD 7.3 - インストール・メディアを VM にアタッチ

nabbisen - May 7 '23 - - Dev Community

はじめに

Conoha VPSOpenBSD の公式イメージを提供してくれています 🙂

しかし更新が 7.0 で止まっています 😢

OpenBSD の OS ベース・システムの サポート・ポリシー (英語) は「最新リリースとその一つ前の 2 つをサポートする」というものです。
7.3 がリリースされた後にサポートされるのは 7.3 と 7.2 だけです。

すなわち 7.3 のリリースに伴い 7.1 が公式から姿を消しました。
このため、仮想マシン (VM、Conoha VPS の「サーバー」) を 7.0 から始めてコツコツと sysupgrade を実行して最新に追いつく、ということが (「7.1 の URL が見付かりません」エラーが出て) できなくなりました 😭

何か解決策は無いか... 🤔
と探したところ、Conoha VPS 公式でサポートされている機能に「ISOイメージをマウントする」というものがありました。カスタム・メディアをアタッチしてそこから VM をブートする、ということができます ✨🙌✨

参考 URL

チュートリアル

公式未提供 OS をインストールしてカスタム VM の作成を行います。Conoha VPS の API とツール、ならびに当該 OS のオリジナルのインストール・メディアを使用します。

conoha-iso ツールのインストール

まずはツールを取得します。Linux (amd64) の場合です:

$ curl -sL \
      https://github.com/hironobu-s/conoha-iso/releases/download/current/conoha-iso-linux.amd64.gz | \
      zcat > conoha-iso && \
      chmod +x ./conoha-iso
Enter fullscreen mode Exit fullscreen mode

実行パーミッション付きで作成されます。

$ ls
conoha-iso*
Enter fullscreen mode Exit fullscreen mode

この他 macOS や Windows 版の実行ファイルも提供されています。
さらに Go 言語 のソースをもとに自分でビルドすることもできます。

API ユーザーの準備

ツールは API 経由でイメージの操作を行います。
Conoha VPS の管理画面で、API ユーザーを有効にしましょう。

conoha-api-user

ツールの使用

認証情報の指定

ツール実行時に、API ユーザーの認証情報と、処理対象の指定が求められます。

コマンド実行履歴への配慮

ログその他に機密情報を残さないように注意しましょう。以下は Fish シェル の場合の例です:

$ fish --private
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
fish is running in private mode, history will not be persisted.
Enter fullscreen mode Exit fullscreen mode
環境変数で指定する場合

環境変数にパラメーターを記憶させておくことで、実行都度、オプション指定が不要になります。(もちろん内容が環境変数として永続しないように注意しましょう。)

Case fish

set -x で設定できます:

$ # `set -x a b` in fish is `export a=b` in bash

$ set -x OS_USERNAME (...)
$ set -x OS_PASSWORD  (...)

$ set -x OS_TENANT_ID (...)
$ # alternatively:
$ #set -x OS_TENANT_NAME (...)

$ set -x OS_REGION_NAME tyo2
Enter fullscreen mode Exit fullscreen mode

なお tyo2 は東京リージョンです。

Case bash

export を用います:

$ export VAR_NAME=${value}
Enter fullscreen mode Exit fullscreen mode
コマンド・オプションで指定する場合

環境変数を使わずに、ツール実行都度、コマンド・オプションとして指定する方法もあります。

$ # Case テナント ID を使用
$ ./conoha-iso (command) -u ${api-username} -p ${api-password} -t ${tenant-id} -r tyo2
$ # Case テナント名 を使用
$ #./conoha-iso (command) -u ${api-username} -p ${api-password} -n ${tenant-name} -r tyo2
Enter fullscreen mode Exit fullscreen mode

イメージ一覧の表示

さて準備が整いました。
実際にツールを使いましょう。

まずは現状のカスタム・イメージの一覧を表示します:

$ ./conoha-iso list
Enter fullscreen mode Exit fullscreen mode

おそらくまだ何も無いはずです:

No ISO images.
Enter fullscreen mode Exit fullscreen mode

イメージのクラウド・ユーザー一時領域への保存

イメージを配置します。
この操作を行うことで、オリジナルの場所のイメージ・ファイルが、Conoha における API ユーザー (= アカウント) の一時領域に保存されます。(別の言い方をすると、download というコマンド名ですが、"ダウンロード" される先はユーザーのクライアント端末ではありません。)

$ ./conoha-iso download -i https://cdn.openbsd.org/pub/OpenBSD/7.3/amd64/cd73.iso
Enter fullscreen mode Exit fullscreen mode

今回は OpenBSD の最新版がターゲットなので、OpenBSD の Downloading OpenBSD ページに記載されている URL を指定しました。

INFO[0001] Download request was accepted.
Enter fullscreen mode Exit fullscreen mode

API リクエストが成功しました。
バックグラウンドでイメージのダウンロードが行われるので、少し待つ必要があります。(もっとも今回は cdXX.iso を指定したので、小サイズです。時間はほとんど掛かりませんでした。)

イメージ保存の完了をコマンドで確認しましょう:

$ ./conoha-iso list
Enter fullscreen mode Exit fullscreen mode

以下のように目的のものが出力されれば OK です。(そうなら無かった場合はふたたび待ちましょう。)

[Image1]
Name:  cd73.iso
Url:   https://cdn.openbsd.org/pub/OpenBSD/7.3/amd64/cd73.iso
Path:  /mnt/isos/repos/tenant_iso_data/(...)/cd73.iso
Ctime: Sat Mar 25 16:42:44 2023
Size:  10780672
Enter fullscreen mode Exit fullscreen mode

メディアの VM へのアタッチ

本手順には前提条件があります。
Conoha VPS の「サーバー」に、作成済、且つ、停止状態の VM があること、です。

準備が良いようでしたら、ツールで insert コマンドを実行します。

$ ./conoha-iso insert
Enter fullscreen mode Exit fullscreen mode

Conoha VPS 「サーバー」マシンの一覧が表示されます。アタッチ対象を選びましょう。

[1] (...) (255-255-255-255)
Please select VPS [1-N]: 1
Enter fullscreen mode Exit fullscreen mode

次にカスタム・イメージをたずねられます。
先ほど保存したものを選びましょう。

[1] cd73.iso
Please select ISO [1]: 1
Enter fullscreen mode Exit fullscreen mode

以下のように表示されれば成功です。次回 VM 起動時、アタッチしたメディアからブートされます。

INFO[0004] ISO file was inserted and changed boot device. 
Enter fullscreen mode Exit fullscreen mode

OS インストール

管理画面のサーバー「詳細情報」では、「ブートディスク」が「SSD 100 GB」のままですが、問題無くメディアから起動されます。

conoha-vm-with-media-inserted

なじみのあるインストーラー画面が始まるでしょう。

conoha-obsd-installer-started-by-media

メディアのデタッチ

インストールが完了すると、メディアをデタッチしましょう。そのために、VM をシャットダウンします。

シャットダウン後、ツールのコマンドでデタッチが行えます。

$ ./conoha-iso eject
Enter fullscreen mode Exit fullscreen mode

対象の VM をたずねられるので、回答します。

[1] (...) (255-255-255-255)
Please select VPS [1-N]: 1
Enter fullscreen mode Exit fullscreen mode

以下のように表示されれば成功です。

INFO[0003] ISO file was ejected.
Enter fullscreen mode Exit fullscreen mode
トラブル・シューティング

eject が失敗する場合があります。

以下のエラーメッセージは、VM が実行中であることを表します。VM をシャットダウンしましょう。

ERRO[0003] Return 409 status code from the server. (Instance (...) in vm_state is active. Cannot mount|unmount iso image while the instance is in this state.) 
Enter fullscreen mode Exit fullscreen mode

以下のエラーの場合、VM のシャットダウンが行われていますが、未完了の状態です。マシンが完全に停止するまで、もうしばらく待つ必要があります。

ERRO[0004] Return 409 status code from the server. (Instance (...) in task_state is powering-off. Cannot mount|unmount iso image while the instance is in this state.) 
Enter fullscreen mode Exit fullscreen mode

おわりに

Conoha VPS 公式ツールとわかりやすいサポート・ページのおかげで、OpenBSD の最新版 VM を直接作成できるようになりました 👏

さらに Alpine Linux のような、公式イメージとして提供されていない OS もインストールできるようになりました 😊

conoha-vps-os-images

(参考) conoha-iso ヘルプ情報

./conoha-iso help
Enter fullscreen mode Exit fullscreen mode
NAME:
   conoha-iso - This app allow you to manage the ISO images on ConoHa.

USAGE:
   conoha-iso [global options] command [command options] [arguments...]

VERSION:
   0.5

COMMANDS:
   list      List ISO Images.
   download  Download ISO file from the FTP/HTTP server.
   insert    Insert an ISO images to the VPS.
   eject     Eject an ISO image from the VPS.
   server    Run the server.
   help, h   Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version
Enter fullscreen mode Exit fullscreen mode

ツール作成者の方々とプロジェクトに謝意を込めつつ。

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .