ProxmoxVEでAmazonLinuxを構築する


概要

以下の記事を参考にAmazon Linuxを構築したが、もう少し簡単な方法を見つけた。その方法についてまとめる
https://qiita.com/tukiyo3/items/0ec795da4c3f7907d858

STEP1 ストレージの作成

AmazonからKVM用のイメージを入手する必要がある。作業しやすいように「ストレージ」を用意する。まずホスト側で作業用のディレクトリを作成

root@kiyoura:~# pwd
/root
root@kiyoura:~# mkdir aws-image
root@kiyoura:~# cd aws-image

作成したディレクトリにAmazonLinux2のイメージを公式サイトからダウンロードする
最新のURLは https://cdn.amazonlinux.com/os-images/latest/kvm/ を参照

root@kiyoura:~/aws-image# wget https://cdn.amazonlinux.com/os-images/2.0.20200304.0/kvm/amzn2-kvm-2.0.20200304.0-x86_64.xfs.gpt.qcow2

作成したディレクトリを「ストレージ」として登録する。
「データセンター」-「ストレージ」-「ディレクトリ」を選択

IDにストレージ名「aws-image」、ディレクトリに「/root/aws-image」を入力

STEP2 VMの作成

VMを作成。「名前」の欄を記入

OSで「ISOを使用する」から「CD/DVD物理ドライブを使用する」に変更。seed.isoが不要ということ。

システムではグラフィックカードを「VMWare互換」にする。noVNCでの画面表示に不具合が少ない。QEMUエージェントにチェック。

「ハードディスク」では「ストレージ」が「aws-image」になるように。ディスクサイズは1GBにしてあとで拡張したほうが実際のイメージサイズと整合性が取れていいと思う。

CPUは種別を「host」にするのがおすすめ。ホストマシンのCPU命令がすべて使えるのでパフォーマンス的に有利なはず。

あとは全て「次へ」を押す。

デフォルトのハードディスクファイルができるので、AWSからダウンロードしたファイルとすり替える。「110」と書いてある箇所はマシン番号(vmid)なので、作成したものに合わせて読み替えるように。

root@kiyoura:~/aws-image# cp -a amzn2-kvm-2.0.20200304.0-x86_64.xfs.gpt.qcow2 images/110/vm-110-disk-0.qcow2

STEP3 VMのカスタマイズ

3つのデバイスを追加する。ひとつはCloudInitデバイス

追加後にユーザーとパスワードを設定する。これで起動後にログインする。ネットワークはそのまま。「Regenerate Image」をクリック。(ネットワークでIPの設定を入力できるが、反映されずDHCPで動作する)

もうひとつはRNG。設定はデフォルトでよい。追加しないとRNGがありませんのような起動ログが出力されるため。

最後にシリアルポート。これを追加するとコンソールがnoVNCからxterm.jsになるのでコピペが楽になる。

ハードディスクのサイズを実際のAWSから落としたものと一致させる
Before

1GBだけ増やすと

26GBになる

起動するとこの画面で止まる。

Cloud-Initで設定したユーザーでログイン

STEP4 AmazonLinuxの基本設定

# ProxmoxVEの管理画面からIPを見たり、シャットダウンできるようにする
$ sudo yum install qemu-guest-agent
# キーボードがUSなのでJISにする
$ sudo localectl set-keymap jp106
# タイムゾーンを日本時間に
$ sudo timedatectl set-timezone Asia/Tokyo
# 文字コード
$ sudo localectl set-locale LANG=ja_JP.UTF-8
# SSHでパスワードログインできるようにする
$ sudo sed -i -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config
$ sudo systemctl restart sshd
$ sudo shutdown now

SSHで入れる

おまけ

作成したVMをテンプレートに変換すると、AmazonLinuxが容易に量産できる。ターゲットストレージを明示してあげないとクローン時にエラーが出るので注意。