ConoHaのVPS割引きっぷの割引が12/9までらしいのでVPS契約してRHEL9インストールする

#ConoHa#advent_calendar

ryoo14

します。

概要

これは「ConoHa Advent Calendar 2022」8日目の記事です。

Advent Calendarなんて何年振りに書くかわかりませんが、このはちゃんが可愛いのと参加すると可愛い卓上カレンダーが貰えるらしいので書きます。

ConoHaでは現在秋の超得キャンペーンを開催中で、VPSの全プランが最大75%(!)OFFになり、月額277円から契約が可能です。
有効期間が36ヶ月のきっぷについてはメモリ4GBのプランが通常3608円/月のところ、なんと875円/月(支払額合計31,482円)なのです。安い。

割引終了までもうすぐですし、RHEL 9がリリースされたのにまだ触れてなかったので、VPS契約してRHELインストールまでやってみました。

Red Hat Developer Subscription for Individualsはすでに入手済、isoも入手済の前提で進めていきます。

なお、時間の関係上スクショがなく、少々味気ない感じになりました。

サーバー追加

ConoHaのコントロールパネルにログインして、左上にある「サーバー追加」をクリックします。

VPS割引きっぷを「利用する」、有効期間を「36ヶ月」にすると各プランの料金が表示されます。安いですね。

イメージタイプにはCentOSやRocky Linux、AlmaLinuxなどあるものの、肝心のRHELは存在しません。デフォルトで用意されていないようなので、一旦は適当なOSを選択してVPSを作成します。

作成できたらシャットダウンしておきます。

ISOダウンロード

どうやらAPIで外部のISOファイルを利用可能なようなので、curlでぽちぽちAPIを叩いていきます。

ConoHa API Indexがあるので、これを参照します。

エンドポイントが色々ありますが、どれもtoken発行が前提なので、まずはtokenを発行します。
発行にはテナントIDが必要なので、ConoHa コントロールパネルの「API」->「テナント情報」からテナントIDを入手します。

また、APIユーザーも必要になるため、未作成であればパスワードを設定してこれも控えておきます。

token発行だけでなく各APIのエンドポイントURLは「エンドポイント」に記載されているので、確認しておきましょう。

テナントID、ユーザー名/パスワード、エンドポイントURLが入手できたら、以下のようにコマンドを実行してtokenを発行します。

$ curl -s -X POST -H "Accept: application/json" -d '{"auth":{"passwordCredentials":{"username":"<ユーザー名>","password":"<パスワード>"},"tenantId":"<テナントID>"}}' <Identity ServiceのURL>/tokens | jq

{
  "access": {
    "token": {
      "issued_at": "2022-12-07T06:37:38.598837",
      "expires": "2022-12-08T06:37:38Z",
      "id": "xxxxx",
      "tenant": {
        "domain_id": "gnc",
        "description": "v2",
        "enabled": true,
      ...
}

access -> token -> idにあるxxxxxの部分がtokenになりますので、控えておきます。

tokenが発行できたら、まずは現状のISOファイルのダウンロード状況を確認しておきます。

$ curl -s -X GET -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" <Compute ServiceのURL>/iso-images | jq

{
  "iso-images": []
}

何もダウンロードしていなければ空のはずです。

では事前に用意したRHELのISOをダウンロードします。
ConoHa上にISOをダウンロードさせる場合はhttp, https, ftpなどでつつける場所にISOを配置しておく必要があります。私は別で持っているWebサーバ上にISOを配置して対応しました。


$ curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" -d '{"iso-image":{"url":"<ISOを配置しているURL>"}}' <Compute ServiceのURL>/iso-images

400番台のエラーコードではなく201が返ってきているようならリクエスト自体は成功しているので、気長に待ちます。
ダウンロードが完了しますと、以下のようにダウンロード済のISOが表示されます。


$ curl -s -X GET -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" <Compute ServiceのURL>/iso-images | jq

{
  "iso-images": [
    {
      "ctime": "Tue Nov 29 00:36:30 2022",
      "name": "rhel-baseos-9.1-x86_64-dvd.iso",
      "path": "<ISOのpath>",
      "size": 9060745216,
      "url": "<ISOを配置しているURL>"
    }
  ]
}

iso-images -> path<ISOのpath>は後ほどISOのマウント時に使用するので、これも控えておきます。

サーバーインストール

ISOのダウンロードが完了したら、事前に作成しておいたVPSにインストールしていきます。

ISOのマウントもAPIで実行できますので、まずは作成したVPSのサーバーIDを確認します。

$ curl -s -X GET -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" <Compute ServiceのURL>/servers | jq

{
  "servers": [
    {
      "id": "xxxxx",
      ...
    }
  ]
}

servers -> idxxxxxがサーバーIDになります。

サーバーIDを確認できたら、ISOをマウントします。

$ curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" -d '{"mountImage": "<ISOのpath>"}' <Compute ServiceのURL>/servers/<サーバーID>/action

こちらもエラーがなければマウント成功しているはずですので、VPSを起動します。
見慣れたインストーラーの画面が出れば成功です。インストールしてしまいましょう。

ISOアンマウント

インストール完了後、再起動してしばらく放置していたのですが、軽く設定しようと後日VPSを覗いたところ、またRHElのインストーラー画面でした。どうやらISOは自動でアンマウントされないようなので、APIでアンマウントしてしまします。

$ curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: <token>" -d '{"unmountImage": ""}' <Compute ServiceのURL>/servers/<サーバーID>/action

エラーがなければ成功。再起動してインストールしたRHELが起動してくることを確認します。

終わりに

今回、勢いで36ヶ月のきっぷを買ってしまったので、3年間このはちゃんと色々遊ぼうと思います。
本記事で触れている内容はConoHa公式のドキュメントにも記載があります。コマンドも用意されているので、そちらを使ったほうが圧倒的に楽ですね。

CLIツールで簡単にISOイメージをマウントする

年末年始、ConoHa VPSを使ってサーバーのお勉強などいかがでしょうか。