CentOS 8 を ConoHa の ISO API を PowerShell で 叩いてインストールしてみる


CentOS 8.0.1905 がリリースされました。

新しい OS はまず試してみたいところですが、今回はサーバー運用を前提に ConoHa で利用してみます。

ConoHa はテンプレートイメージが多いですが、さすがにリリース翌日にはないので、ISO イメージを利用する API を使用してインストールしてみます。

今回も、過去の記事同様 PowerShell を利用します。

ISO イメージからインストール手順

認証系

このあたりは、他の API を利用する際にも使える部分です。

# アカウント情報より確認すること
$apiUser = "gncu00000000"
$apiPassword = ""
$tenantId = "00000000000000000000000000000000"
$identityServiceUrl = "https://identity.tyo[12].conoha.io/v2.0"
$computeService = "https://compute.tyo[12].conoha.io/v2/$tenantId"

# トークンの取得
$body = '{"auth":{"passwordCredentials":
{"username":"' + $apiUser + '","password":"'+$apiPassword+'"}
,"tenantId":"'+$tenantId+'"}}'
$url = $identityServiceUrl+"/tokens"
$mytokens = Invoke-RestMethod $url -Method POST -Body $body
$token = $mytokens.access.token.id
$tokenHeader = @{"X-Auth-Token" = $token}

ISO の選択

CentOS 8 stream というのもあるようですが、今回は従来のバージョンの延長線上にある「CentOS-8-x86_64-1905-dvd1.iso」を利用します。

適当なミラーされているところから、URL を取得します。

CentOS 7 だと、DVD、Everything、Minimal など複数ありましたが、8 だと dvd1 と boot のみのシンプルな構成になっていました。

ISO のダウンロード

# ISO 一覧
$result = Invoke-RestMethod -Method GET -Headers $tokenHeader -Uri "$computeService/iso-images"
$result
iso-images
----------
{}

ダウンロード前なので、何も出力されないことを確認します。

# ISO ダウンロード
$body = '{
    "iso-image": {
        "url": "http://~~~/pub/linux/centos/8/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso"
    }
}'
$result = Invoke-RestMethod -Method POST -Headers $tokenHeader -Uri "$computeService/iso-images" -Body $body

# ISO 一覧
$result = Invoke-RestMethod -Method GET -Headers $tokenHeader -Uri "$computeService/iso-images"
$result.'iso-images'
url   : http://~~~/pub/linux/centos/8/isos/x86_64/CentOS-8-x86_64-1905-dvd1.iso
path  : /mnt/isos/repos/tenant_iso_data/(テナントID)/CentOS-8-x86_64-1905-dvd1.iso
ctime : Fri Aug 16 06:59:26 2019
name  : CentOS-8-x86_64-1905-dvd1.iso
size  : 7135559680

7GB程度あるため、しばらく待ってかかりますが、完了すると上記になります。

ISOイメージの挿入

VM の作成も API で可能ですが、Flavor や Image など考慮事項が多いので、コントロールパネルにて実施しました。

作成後、VM は停止させます。

# VM 状況確認
$uuid = "00000000-1111-2222-3333-444444444444"
$result = Invoke-RestMethod -Method GET -Headers $tokenHeader -Uri "$computeService/servers/$uuid​"
$result.server.status
'SHUTOFF'
$result.server.metadata.properties

'{"vnc_keymap":"ja","hw_video_model":"vga","hw_vif_model":"virtio","hw_disk_bus":"virtio","cdrom_path":""}'

SHUTOFF 状態であること、cdrom_path が null であることを確認します。

# ISO マウント
$body = '{
    "mountImage": "/mnt/isos/repos/tenant_iso_data/(テナントID)/CentOS-8-x86_64-1905-dvd1.iso"
}'
$result = Invoke-RestMethod -Method POST -Headers $tokenHeader -Uri "$computeService/servers/$uuid/action" -Body $body

# VM 状況確認
$result = Invoke-RestMethod -Method GET -Headers $tokenHeader -Uri "$computeService/servers/$uuid​"
$result.server.metadata.properties
'
{"vnc_keymap":"ja","hw_video_model":"vga","hw_vif_model":"virtio","hw_disk_bus":"virtio","cdrom_path":"/mnt/isos/repos/tenant_iso_data/(テナントID)/CentOS-8-x86_64-1905-dvd1.iso"}'

このように、cdrom_path が入っていれば OK です。

インストール

CentOS 8.0.1905 ISO 起動直後

このようにメニューが表示されたら、ISO の認識は完了しています。

CentOS 8.0.1905 インストールソフトウェアの選択

CUI で利用するので、デフォルトのサーバー(GUI使用)ではなく、サーバーにてインストールしました。

CentOS 8.0.1905 インストール後再起動直前

ISO 排出のため、この画面で一旦 VM をシャットダウンします。

# ISO 取り出し
$body = '{
    "unmountImage": ""
}'
$result = Invoke-RestMethod -Method POST -Headers $tokenHeader -Uri "$computeService/servers/$uuid/action" -Body $body

# VM 状況確認
$result = Invoke-RestMethod -Method GET -Headers $tokenHeader -Uri "$computeService/servers/$uuid​"
$result.server.status
'SHUTOFF'
$result.server.metadata.properties

'{"vnc_keymap":"ja","hw_video_model":"vga","hw_vif_model":"virtio","hw_disk_bus":"virtio","cdrom_path":""}'

ISO 排出後改めて起動します。

起動

CentOS 8.0.1905 インストール後起動直後

CentOS 8 が無事起動しました。

スペックについて

CentOS 8 リリースノートには下記の記載がありました。

CentOS-8 (1905) のインストーラーおよび利用には、最低限 2GB の搭載メモリーが必要です。搭載メモリー 4GB 以上を推奨致します。

ja/Manuals/ReleaseNotes/CentOS8.1905 – CentOS Wiki

CentOS 7 では 1280MB 以上だったので、1.6倍になっていますね。

今回は、ConoHa の1GBプランで作成しましたが、インストールおよび起動でメモリ不足のエラーは確認しませんでした。

ConoHa には 512MB プランもあるので、CentOS 8 が動くのか気になるところです。

IPv6 について

DHCP で IPv4 アドレスやホスト名は自動設定されたのですが、IPv6 アドレスは一つも付与されませんでした。

ConoHa の IPv6 の実装は変わっているようで、ConoHa 標準のテンプレートイメージにはなにか工夫がされているのかもしれません。

OS のパッケージ面

いろいろありますが、下記があるようです。

  • Python 3 が標準になったこと
  • yum から dnf に移行した

iptables が nftables に変わっているのですが、CentOS 7 の時点で、Firewalld になっていたので、nftables は導入していません。

削除されたパッケージとして、Ansible、sshpass、whois がインストールできないのも地味に痛いです。

また、curl の挙動が変わっていて、 –tls1.1 オプションを付けた場合、今までは、tls1.1「のみ」だったのが「以上」になってます。
なので、サーバー側で、TLS1.1を拒否するかの検証が困難になりました。

外部のパッケージも、RHEL / CentOS 8 に対応していないものもありますが、Fedora 用をいれたら動く物もありました。

まとめ

ConoHa の ISO API を使って簡単に CentOS 8 を試すことができました。

新しいOSにも慣れていきたいです。


Comments

comments

コメントを残す

メールアドレスが公開されることはありません。

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)