AWS
AmazonLinux
AmazonLinux2

Amazon Linux 2 を VirtualBox でオンプレミスの開発環境に使用する

概要

  • Amazon Linux 2 が発表
  • EC2だけでなく、Docker や VMwareやVirtualBox、Hyper-V などの仮想環境で使用可能
  • ローカルの開発環境で使いたい!

Amazon Linux 2 とは

↓ここを参照
- Amazon Linux 2
- Amazon Linux 2 のご紹介

イメージのダウンロード

↓ここから
Amazon Linux 2 virtual machine images

VirtualBox で Amazon Linux 2 起動する

ポイント

ログインユーザーのパスワードやSSHの公開鍵は cloud-init で設定する

↓詳しくは
README.cloud-init

cloud-init のファイルを格納したISOイメージを作成

以下の作業は Amazon Linux AMI 2017.09.1 のEC2インスタンスで作業しました。
( genisoimage が使用できればどこでも良いはず)

2017/12/17
Mac で cloud-init のファイルを格納したISOイメージを作成する方法を その他 に記載しました。

genisoimage コマンドのインストール

$ sudo yum -y install genisoimage

meta-data ファイルを作成

meta-data ファイルの内容
(ホスト名はお好みで)

local-hostname: localhost.localdomain

user-data ファイルを作成

user-data ファイルの内容
(パスワードに secret を設定する場合)

#cloud-config

chpasswd:
  list: |
    ec2-user:secret

【注意】 ec2-user:secret の間にスペースを入れてはいけません

ISOイメージの作成

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

注意: ボリュームIDは cidata を指定

VirtualBox に新規仮想マシンを追加

  1. ハードディスクにダウンロードした Amazon Linux 2 のイメージを指定

新規仮想マシンの追加

  1. cloud-init のファイルを格納したISOイメージを起動ドライブにマウント

ストレージ設定

VirtualBox の仮想マシンを起動

ユーザー ec2-user / パスワード user-data で指定したパスワード でログインできます

その他

Mac で cloud-init のファイルを格納したISOイメージを作る方法

公式のドキュメントでは cloud-init のファイルを格納したISOイメージを genisoimage で作成しています。

実際には以下の条件に合うイメージであれば利用可能です。
- ファイルシステムが ISO9660 (JOLIET) である
- ボリュームIDが cidata である

このイメージを Mac で作るときは hdiutil を使用します。

hdiutil で cloud-init のファイルを格納したISOイメージを作成する

ディレクトリ cidata に、ファイル user-datameta-data を格納する
(ディレクトリ名がボリュームIDになります)

.
└── cidata
    ├── meta-data
    └── user-data

hdiutil でISOイメージを作成する

$ hdiutil makehybrid -iso -joliet -o seed.iso cidata

ISOイメージがカレントディレクトリの seed.iso に出力されます。

SSHで使用する公開鍵を user-data で登録する方法

↓設定方法のサンプル
Cloud config examples — Cloud-Init 17.1 documentation > Configure instances ssh-keys

まとめ

Amazon Linux がオフラインの開発にも使用できるようになりました。
現在はまだ LTS Candidate ということなので、LTS バージョンがリリースされるのが楽しみです。

つづき

Amazon Linux 2 を Vagrant で使用するための Base Box の作り方を書きました
Amazon Linux 2 の Vagrant Base Box を作成する

参考