はじめに
Conoha VPS は OpenBSD の公式イメージを提供してくれています 🙂
しかし更新が 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
- Conoha VPS 公式ドキュメント
- ソフトウェア・リポジトリ (GitHub)
チュートリアル
公式未提供 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
実行パーミッション付きで作成されます。
$ ls
conoha-iso*
この他 macOS や Windows 版の実行ファイルも提供されています。
さらに Go 言語 のソースをもとに自分でビルドすることもできます。
API ユーザーの準備
ツールは API 経由でイメージの操作を行います。
Conoha VPS の管理画面で、API ユーザーを有効にしましょう。
ツールの使用
認証情報の指定
ツール実行時に、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.
環境変数で指定する場合
環境変数にパラメーターを記憶させておくことで、実行都度、オプション指定が不要になります。(もちろん内容が環境変数として永続しないように注意しましょう。)
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
なお tyo2 は東京リージョンです。
Case bash
export
を用います:
$ export VAR_NAME=${value}
コマンド・オプションで指定する場合
環境変数を使わずに、ツール実行都度、コマンド・オプションとして指定する方法もあります。
$ # 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
イメージ一覧の表示
さて準備が整いました。
実際にツールを使いましょう。
まずは現状のカスタム・イメージの一覧を表示します:
$ ./conoha-iso list
おそらくまだ何も無いはずです:
No ISO images.
イメージのクラウド・ユーザー一時領域への保存
イメージを配置します。
この操作を行うことで、オリジナルの場所のイメージ・ファイルが、Conoha における API ユーザー (= アカウント) の一時領域に保存されます。(別の言い方をすると、download
というコマンド名ですが、"ダウンロード" される先はユーザーのクライアント端末ではありません。)
$ ./conoha-iso download -i https://cdn.openbsd.org/pub/OpenBSD/7.3/amd64/cd73.iso
今回は OpenBSD の最新版がターゲットなので、OpenBSD の Downloading OpenBSD ページに記載されている URL を指定しました。
INFO[0001] Download request was accepted.
API リクエストが成功しました。
バックグラウンドでイメージのダウンロードが行われるので、少し待つ必要があります。(もっとも今回は cdXX.iso
を指定したので、小サイズです。時間はほとんど掛かりませんでした。)
イメージ保存の完了をコマンドで確認しましょう:
$ ./conoha-iso list
以下のように目的のものが出力されれば 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
メディアの VM へのアタッチ
本手順には前提条件があります。
Conoha VPS の「サーバー」に、作成済、且つ、停止状態の VM があること、です。
準備が良いようでしたら、ツールで insert
コマンドを実行します。
$ ./conoha-iso insert
Conoha VPS 「サーバー」マシンの一覧が表示されます。アタッチ対象を選びましょう。
[1] (...) (255-255-255-255)
Please select VPS [1-N]: 1
次にカスタム・イメージをたずねられます。
先ほど保存したものを選びましょう。
[1] cd73.iso
Please select ISO [1]: 1
以下のように表示されれば成功です。次回 VM 起動時、アタッチしたメディアからブートされます。
INFO[0004] ISO file was inserted and changed boot device.
OS インストール
管理画面のサーバー「詳細情報」では、「ブートディスク」が「SSD 100 GB」のままですが、問題無くメディアから起動されます。
なじみのあるインストーラー画面が始まるでしょう。
メディアのデタッチ
インストールが完了すると、メディアをデタッチしましょう。そのために、VM をシャットダウンします。
シャットダウン後、ツールのコマンドでデタッチが行えます。
$ ./conoha-iso eject
対象の VM をたずねられるので、回答します。
[1] (...) (255-255-255-255)
Please select VPS [1-N]: 1
以下のように表示されれば成功です。
INFO[0003] ISO file was ejected.
トラブル・シューティング
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.)
以下のエラーの場合、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.)
おわりに
Conoha VPS 公式ツールとわかりやすいサポート・ページのおかげで、OpenBSD の最新版 VM を直接作成できるようになりました 👏
さらに Alpine Linux のような、公式イメージとして提供されていない OS もインストールできるようになりました 😊
(参考) conoha-iso
ヘルプ情報
./conoha-iso help
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
ツール作成者の方々とプロジェクトに謝意を込めつつ。