Amazon Linux 2をオンプレミス(ローカルPCのVM)で動かしてみる。

# 1.前提環境

今回は以下の環境で作成します。
環境に応じて内容を読み替えてください。

・WSL(Ubuntu)を使用してWindows 10上のC:\VM\testvm01に直接VMイメージを作成します。

・ハイパーバイザーはHyper-Vを使用します。

・Hyper-Vのネットワークはブリッジを使用します。

・<font color=red><b>作成する仮想マシンは何等かのDHCPでIPアドレス、デフォルトゲートウェイ、参照先DNSが払い出されること。</b></font>
 ※今回はハイパーバイザーのネットワークがブリッジのため、ご家庭にあるブロードバンドルータのDHCP機能を使用します。
 ※ハイパーバイザーのネットワークがNATの場合はハイパーバイザー搭載のDHCP機能でも大丈夫だと思います。(検証はしてない)

・<font color=red><b>とりあえず、動かすことが目的なのでセキュリティは緩め</b></font>
 ※必要に応じて対処してください。

# 2.作業に必要なコマンドをインストールする。

~~~
$ sudo apt install genisoimage unzip
~~~

# 3.VMイメージを作成するディレクトリを作成して移動

~~~
$ mkdir -p /mnt/c/VM/testvm01
$ cd /mnt/c/VM/testvm01
~~~


# 4.seed.isoを作成

今回は以下の設定のseed.isoを作成

|設定項目|設定値|
|---|---|
|ホスト名|testvm01|
|SSHのパスワード認証によるログイン|有効|
|初期ユーザー(ec2-user)ログインパスワード|amazon|

# 4.1.meta-dataとuser-dataを作成

~~~
$ cat << EOF > meta-data
local-hostname: testvm01
EOF

$ cat << EOF > user-data
#cloud-config
ssh_pwauth: True
chpasswd:
  list: |
    ec2-user:amazon
EOF
~~~
<font color=red><b>※user-dataの１行目のコメント[#cloud-config]の省略は不可</b></font>

## 4.2.meta-dataとuser-dataからseed.isoを作成
~~~
$ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
~~~

## 4.3.不要になったmeta-dataとuser-dataを削除
~~~
$ rm -i meta-data user-data
~~~


# 5.仮想ディスクイメージを作成

~~~
$ curl -LO https://cdn.amazonlinux.com/os-images/2.0.20201111.0/hyperv/amzn2-hyperv-2.0.20201111.0-x86_64.xfs.gpt.vhdx.zip
$ unzip amzn2-hyperv-2.0.20201111.0-x86_64.xfs.gpt.vhdx.zip
$ rm -i amzn2-hyperv-2.0.20201111.0-x86_64.xfs.gpt.vhdx.zip
~~~
※上記のURLは2021/01/03時点のHyper-V用の仮想ディスクイメージの最新です。
  Hyper-V以外や最新の仮想ディスクイメージは下に記載した「<a href=#9参考>9.参考</a>」のリンク先から探して下さい。


# 6.仮想マシンの作成
今回はHyper-Vマネージャで以下の設定で仮想マシンを新規作成します。
必要に応じて内容を読み替えてください。
※画像だけ張るので詳しい手順は省略
※他のハイパーバイザーを使用する場合は、そのハイパーバイザーで該当する設定を行ってください。

## 6.1.仮想マシン作成ウィザードの設定
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/146ccd72-b05c-3689-5fdb-d3fc5965f804.png)

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/80d381fa-33cd-dee3-00a4-974617ef59bd.png)

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/225a1b7d-10da-99be-9ca4-c9e3783a6155.png)

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/7efa00d0-4a9e-063b-96e7-a7833a5d3699.png)

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/f34bdc84-f70a-3a92-dcb5-e6d256e5f641.png)

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/4b043db7-a401-1b6d-4ed0-5cb25cb0afb4.png)

## 6.2.seed.isoのアタッチとブート設定
仮想マシンを作成したらseed.isoのアタッチを行い、ブートデバイス(スタートアップ)の順序をHDD優先に設定します。

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/cb9bf70d-f609-560e-99ae-965220c58b3a.png)

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/62f56d3d-1bdb-a910-1b8b-fa4e287721c8.png)

# 7.動作確認
・仮想マシンを起動してログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/71eb598a-796d-09cc-cfc8-0fa8caca4169.png)

・IPアドレスの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/2e9c3a9b-56a0-d480-5494-03a6a286729c.png)

・SSHでログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509257/b9d6a979-2ad7-c3a2-ec3b-0b3cc7075eb0.png)

# 8.seed.isoのアタッチの恒久化
ハイパーバイザーにより仮想マシンの停止、再起動でseed.isoがデタッチされてしまう場合があります。
各ハイパーバイザーの手順に従い、seed.isoのアタッチを恒久化してください。
※Hyper-Vでは作業不要

# 9.参考
Amazon Linux 2 を仮想マシンとしてオンプレミスで実行する
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/amazon-linux-2-virtual-machine.html