Amazon Linux 2 が出たので VMware ESXi で動かしてみる

AWSTech

2017年12月14日に、Amazon Linux 2 がリリースされました。
なんとオンプレミス環境に対応し、仮想マシンイメージが提供されています。

新バージョンのお試しも兼ねて VMware 環境にセットアップしつつ、躓いたポイントをまとめました。

Amazon Linux 2

AWS の提供する Linux ディストリビューションがメジャーアップデートされました。
アップデート内容は 公式ブログ が詳しいのでそちらを参照。3行でまとめると……

  • LTS 版で5年間のサポート
  • Linux Kernel 4.9 & systemd 対応
  • オンプレミス向けマシンイメージ提供

本番環境が Amazon Linux の場合は、課金を気にせずに VMware で同じ環境を動かせる ようになりました。ありがたい。さっそく作ってみましょう。

イメージ取得

S3 + CloudFront で動いていそうな 公式リポジトリ から取得可能です。
今回は VMware 向けを利用しますが、他にも複数用意されているようです。

  • Hyper-V
  • KVM
  • VirtualBox
  • VMware

VMware に入れてみる

今回は自宅の ESXi 6.0 で検証します。(6.5 に上げたい……)

ダウンロードした ova ファイルをそのままインポートすると何故かエラーになってしまいます。

ova ファイルは tar 形式なので一度展開し、ovf + vmdk の2ファイルとして読み込ませると上手くいきました。

起動……

インポートが終わるとサクッと起動しました。

……が、ここからどうやってログインすればよいのか。

EC2 なら事前登録した SSH 鍵を使うところですが、今回はそれもありません。
誰もログインできない謎のサーバが完成してしまいました。

Cloud-Init

リポジトリをもう一度眺めてみると、README.cloud-init なるファイルに説明があります。
初耳なので調べたところ、クラウドインスタンスの初期化に使われる Cloud-Init と呼ばれるパッケージがあるようです。

Cloud config examples – Cloud-Init 17.2 documentation

サーバ起動時にホスト名変更・ユーザ作成などを実行でき、本家の EC2 でも活用されています。

Cloud-Init 準備

と言うことで、Cloud-Init でログイン用のユーザ設定を投入します。まずは、YAML 形式でファイルを2つ作成。

meta-data ファイル

local-hostname: amznlinux2

ホスト名を指定しているだけです。

user-data ファイル

#cloud-config

users:
  - name: yuu26
    sudo: ALL=(ALL) NOPASSWD:ALL
    plain_text_passwd: hogefuga
    lock_passwd: false

ログイン用ユーザを作成。検証用なのでパスワード認証かつ平文で書いていますが、もちろん鍵認証にも対応しています。

1行目はコメントだろうと思って省いたら動きませんでした。宣言の意味を持っているため、消してはいけません。

seed.iso 作成

用意した meta-data, user-data を iso イメージに格納します。

$ genisoimage -output seed.iso -volid cidata -joliet user-data meta-data

Bash on Windows で作業していましたが、コマンドがないため sudo apt-get install genisoimage で事前にインストールを行いました。

-volid cidata はボリュームラベルの指定です。
-joliet は CD-ROM の論理フォーマット指定で、これがないと8文字を超えるファイル名が格納できません。

起動リベンジ

ESXi のデータストアに seed.iso をアップロードしておきます。
Amazon Linux の仮想マシン設定からマウントし、起動してみます。

起動中に error: no symbol table. などと表示されますがそのまま待つと……

無事に起動・ログインできました! バージョンも 2.0 になっています。

$ uname -a
Linux amznlinux2.localdomain 4.9.62-10.57.amzn2.x86_64 #1 SMP Wed Dec 6 00:07:49 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2.0 (2017.12)"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2.0"
PRETTY_NAME="Amazon Linux 2.0 (2017.12) LTS Release Candidate"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2.0"
HOME_URL="https://amazonlinux.com/"

まとめ

  • Amazon Linux 2 がリリースされました
  • 仮想マシンイメージを使い、VMware 上に構築しました
  • Cluod-Init で初期設定が必要です
  • 課金を気にせず Amazon Linux で検証し放題!

VMware Player や VirtualBox、もちろんコンテナでも動きます。お試しあれ。

AWSTech