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


概要

2017年12月14日に、Amazon Linux 2 がリリースされました。

なんとオンプレミス環境に対応し、仮想マシンイメージが提供されています。

f:id:yuu2634:20171215214833p:plain

新バージョンのお試しも兼ねて 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 に上げたい……)

f:id:yuu2634:20171215220801p:plain


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

f:id:yuu2634:20171215220616p:plain


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

f:id:yuu2634:20171215220632p:plain


起動……

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

f:id:yuu2634:20171215221038p:plain

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

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


Cloud-Init

リポジトリをもう一度眺めてみると、README.cloud-init なるファイルに説明があります。

初耳なので調べたところ、クラウドインスタンスの初期化に使われる Cloud-Init と呼ばれるパッケージがあるようです。

Cloud config examples — Cloud-Init 17.2 documentation


サーバ起動時にホスト名変更・ユーザ作成などを実行でき、本家の Amazon 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 の仮想マシン設定からマウントし、起動してみます。

f:id:yuu2634:20171215225643p:plain


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

f:id:yuu2634:20171215230653p:plain

無事に起動・ログインできました! バージョンも 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、もちろんコンテナでも動きます。お試しあれ。