VMware Cloud on AWSにAmazon Linux 2023を構築する
こんにちは、AWS事業本部の荒平(@0Air)です。
Amazon Linux 2023 (AL2023)は、主にAWSで稼働するOSですが、実はVMware環境用にカスタマイズされたイメージが用意されています。
AWS環境用とVMware環境用に少し差分があり、設定手順が少し異なるため、これをまとめてみます。
vSphere環境で積極的にAmazon Linuxを推す理由は乏しいものの、たとえば現状AWSで開発していて、VMware Cloud on AWSの空きリソースで実験的に使う場合や、有事の際のスタンバイとして用意しておくケースが考えられます。
Amazon Linux 2023の特徴については以下記事もご覧ください。
3行まとめ
- VMware Cloud on AWSやオンプレミスVMware環境でもAmazon Linux 2023が利用可能
- (AWSでは自動で行われる)初期設定をする必要があり、ひと手間を施さなければならない
- VMware環境用イメージはパッケージ内容がAWSのものと少し変わっている
Amazon Linux 2023 on VMware 要件
公式ドキュメントは以下ページです。
VMwareホスト要件
Amazon Linux 2023をVMware環境で稼働させるには、以下の要件を満たす必要があります。
- Intel(R) Xeon(R) Platinum 8275CL プロセッサを搭載したvSphere 8.0
- 仮想マシンHWバージョン13 (VMware ESXi 6.5 以降)
なお、VMware Cloud on AWSではバージョンが常に最新化されるため、要件はクリアしています。
デバイスサポート要件
以下のデバイスモデルが利用できます。
vmw_pvscsi
: VMware準仮想化SCSIコントローラーvmxnet3
: VMware準仮想化ネットワークデバイスata_piix
: 仮想化CD-ROM用のレガシーIDEコントローラー
以下のデバイスモデルは有効ですが、十分にテストされておらず、不完全な場合があります。
vmw_vmci
,vsock
: VMware ゲストエージェント用の仮想化ソケットトランスポートvmw_balloon
: メモリバルーニング用のデバイスSVGA
: 仮想マシンのグラフィックを処理する仮想デバイス- ATキーボード、およびPS/2マウス
ブート要件
VMware環境用OVAでは、BIOSブートモードのみがサポートされています。
UEFIブートを使用すると、既知の問題が発生します。
やってみる
ovaファイルは、イメージをローカル経由でアップロードする(手順1,2)か、インターネットから直接取得する(手順3)ことでデプロイが可能です。
1. VMwareイメージのダウンロード
以下のページから、VMware環境用のAmazon Linux 2023のovaファイルをダウンロードします。
https://cdn.amazonlinux.com/al2023/os-images/latest/
「vmware/」をクリックします。
al2023-vmware_esx-[日付/バージョン]-kernel-6.1-x86_64.xfs.gpt.ova
をダウンロードします。
2. ovaファイルのアップロード
コンテンツライブラリにダウンロードしたovaファイルをアップロードします。
なお、S3バケットと連携したコンテンツライブラリの設定手順は以下をご参照ください。
今回はローカルのコンテンツライブラリを作成し、そこにovaファイルをアップロードしていきます。
コンテンツライブラリの画面に移動し、「作成」をクリックします。
コンテンツライブラリの名前を入力し、「次へ」をクリックします。
「ローカルコンテンツライブラリ」を選択し、「次へ」をクリックします。
セキュリティポリシーの適用はそのまま、ストレージはWorkloadDatastore
または外部ストレージを選択します。
「完了」をクリックします。
作成したコンテンツライブラリを開き、「アイテムのインポート」をクリックします。
ローカルに保存していたovaファイルをインポートします。
ファイルのアップロードが完了すると、「OVF&OVAテンプレート」から仮想マシンを作成できます。
仮想マシンデプロイに関しては通常の作成と変わらないため割愛します。
3. (参考) URLを直接指定してデプロイ
手順1にてURLを確認して、これを直接指定してデプロイすることができます。
例えば、以下のURLのように、Amazon Linuxのファイルパスを直接入力します。但し、vCenterが直接インターネットを参照できない構成では利用できません。
※ 手順1,2を実施している場合はスキップします。
## 例 https://cdn.amazonlinux.com/al2023/os-images/2023.4.20240401.1/vmware/al2023-vmware_esx-2023.4.20240401.1-kernel-6.1-x86_64.xfs.gpt.ova
4. seed.isoの設定
EC2で用いられるインスタンスメタデータサービス(IMDS)が利用できないため、ネットワーク設定・ホスト名・ユーザーデータなどの初期設定情報を含むseed.iso
というファイルを準備します。
※ AL2023の起動自体は前手順が完了した時点で可能ですが、初期設定を行わなければログインができません。
LinuxまたはmacOSにて、以下コマンドを実行します。(ドキュメントでは、Windowsを利用する場合は同等ツールが必要と案内があります)
mkdir seedconfig && cd seedconfig echo "local-hostname: al2023" > meta-data #ホスト名は自由に変更可 vim user-data
user-data
には以下の情報を記述します。(例)
環境に応じて、カスタマイズしてください。
#cloud-config #vim:syntax=yaml users: # A user by the name 'ec2-user' is created in the image by default. - default - name: ec2-user sudo: ALL=(ALL) NOPASSWD:ALL ssh-authorized-keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADA...(略) test@domain - name: pw-user sudo: ALL=(ALL) NOPASSWD:ALL lock_passwd: false plain_text_passwd: 'password'
EC2に立ち上げる際はec2-userに対してSSHするのが一般的かと思いますが、ここでパスワードを指定することが可能です。
plain_text_passwd
にてパスワード指定しています。
seedconfig配下にて、以下のコマンドでファイルをseed.iso
にまとめます。
# Linuxの場合 mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data # macOSの場合 hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata .
データストアにアップロードし、仮想マシンにマウントできるようにします。
仮想マシンの設定を開き、「新規デバイスを追加」から「CD/DVDドライブ」を追加し、seed.iso
を指定します。
仮想マシンの電源を入れて、ログインできることを確認します。
無事にログイン確認できました!
NSXなどの設定によりインターネット接続できる状態であれば、yumコマンドは通常通り利用できます。
参考:
パッケージ差分
Amazon Linux 2023の標準インストールされているパッケージと、VMware用ovaに標準インストールされているパッケージは異なります。
公式ページにてまとめられていますが、ここでは差分のみ抜き出して紹介します。
パッケージの差分リスト
パッケージ | AMI | VMware OVA |
---|---|---|
acpid | 2.0.32 | |
amazon-chrony-config | 4.3 | |
amazon-ec2-net-utils | 2.4.1 | |
amazon-linux-onprem | 1.2 | |
amazon-linux-repo-cdn | 2023.3.20240219 | |
amazon-linux-repo-s3 | 2023.3.20240219 | |
amazon-linux-sb-keys | 2023.1 | 2023.1 |
amazon-onprem-network | 1.2 | |
aws-cfn-bootstrap | 2.0 | |
c-ares | 1.19.0 | |
cloud-init-cfg-ec2 | 22.2.2 | |
cloud-init-cfg-onprem | 22.2.2 | |
dracut-config-ec2 | 3.0 | |
ec2-hibinit-agent | 1.0.8 | |
ec2-instance-connect | 1.1 | |
ec2-instance-connect-selinux | 1.1 | |
ec2-utils | 2.1.0 | |
fuse-common | 3.10.4 | |
fuse-libs | 2.9.9 | 2.9.9 |
fused3 | 3.10.4 | |
fused3-libs | 3.10.4 | |
grub2-pc | 2.06 | |
jq | 1.6 | |
kernel-livepatch-repo-cdn | 2023.3.20240219 | |
kernel-livepatch-repo-s3 | 2023.3.20240219 | |
kernel-modules-extra | 6.1.77 | |
kernel-modules-extra-common | 6.1.77 | |
libdhash | 0.5.0 | |
libldb | 2.6.2 | |
libmspack | 0.10.1 | |
libsss_certmap | 2.5.0 | |
libtalloc | 2.3.4 | |
libtdb | 1.4.7 | |
libtevent | 0.13.0 | |
libtool-ltdl | 2.4.7 | |
libxslt | 1.1.34 | |
oniguruma | 6.9.7.1 | |
open-vm-tools | 12.3.0 | |
policycoreutils-python-utils | 3.4 | |
python-chevron | 0.13.1 | |
python3-daemon | 2.3.0 | |
python3-lockfile | 0.12.2 | |
sssd-common | 2.5.0 | |
sssd-kcm | 2.5.0 | |
xmlsec1 | 1.2.33 | |
xmlsec1-openssl | 1.2.33 | |
zram-generator | 1.1.2 | |
zram-generator-defaults | 1.1.2 |
基本的にはAWSのみで使うもの、VMwareのみで使うもの、とそれぞれ区別されています。
よく使いそうでVMware OVA側に入っていないパッケージは、この中ではjq
でしょうか。
もし必要であれば、sudo yum install jq
でインストールできます。
おわりに
クラウド化を推進する中で、過渡期構成としてAL2023をVMware環境で利用する必要がでてくるケースもあるかと思い、Amazon Linux 2023をVMware環境に立ててみました。
初期設定(seed.iso)は作り込むとかなり大変なので、普段意識することはありませんが、インスタンスメタデータサービス(IMDS)の便利さを思い知りました。
このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!