社内にあるVMware ESXiにAmazon Linux 2をインストールする

2017.12.22

社内の方からVMware ESXiでAmazon Linux 2を動かしたいと要望があったので、早速動かしてみました。

Amazon Linux 2の特徴については【速報】AWS向けの新ディストリビューション Amazon Linux 2 を発表!で詳しく記載があるので割愛させて頂きます

インストールに利用した環境&ソフトウェア

  1. VMware ESXi 5.5
  2. VMware vSphere ClientがインストールされてるWindowsマシン
  3. VMware OVF Tool
  4. EC2 Amazon Linux (ISOイメージを作るテンポラリマシンとして使用)

前準備

https://cdn.amazonlinux.com/os-images/2017.12.0.20171212.2/
上記のURLに各仮想用のDiskイメージが置いてあります。
今回はVMwareが対象となるので、

vmwareイメージ
をまずはダウンロードします。

インストール

ダウンロードが完了したら、VMware vSphere Clinetを起動します。
ファイルメニューに「OVFテンプレートのデプロイ」があるので、選択して、先程ダウンロードした amzn2-vmware_esx-2017.12.0.20171212.2-x86_64.xfs.gpt.ova を指定します。



すると・・・


とエラーが出てしまって先に進めませんでした。
なんか良い方法がないか模索してたらVMwareのページに VMware OVF Tool というものがありました。



今回はWindows7 64Bit上で変換するのでVMware OVF Tool for Windows 64-Bitをダウンロードしました。
早速ローカルPCにVMware OVF Toolツールをインストールします。



Nextをクリックしてそのままインストール



インストールが終わったらFinishをクリックします。

ova形式からvmx形式に変換する

先程インストールしたVMware OVF Toolを使って変換してみます。



ovftool.exeがあるので、それを使って変換します。
Windowsのコマンドプロンプトを出して

cd c:¥Program Files¥VMware¥VMware OVF Tool
ovftool C:¥temp¥amzn2-vmware_esx-2017.12.0.20171212.2-x86_64.xfs.gpt.ova c:¥temp¥amazon_linux.vmx

とコマンドを指定してvmxファイルに変換します。



変換が終わるとCompleted successfullyと表示されるので、出来上がったファイルを確認します。



amazon_linux.vmx
amazon_linux-disk1.vmdk

の2つのファイルが出来ていることが確認できます。 VMwareフォーマットに変換できたので、この2つのファイルをVMware ESXiに持っていきます。

VMware ESXiへvmx,vmdkファイルをアップロードする

VMware vSphere Clientから直接VMware ESXiのdatastoreにファイルをアップロードしてみます。

VMware vSphere Clientのサマリタブをクリックしてリソースにあるストレージのところで右クリックしてデータストアの参照をクリックします

データストア ブラウザのウィンドウが立ち上がってくるのでVMDK_tempと言うフォルダを作成します。

そのフォルダへ2つのファイルをアップロードします。

vmdkファイルの方はシックプロビジョニングのままなのでファイルサイズが1.3GBほどあります。
(シンプロビジョニングに変更することもできますが、Diskに余裕があるので今回はこのままアップロードします)

VMware ESXi上に新規仮想マシンを立ち上げる

アップロードが終わったら通常通りvSphere Clientから新規仮想マシンを作成します

今回はカスタムで作成します。

任意で仮想マシンの名称を指定します(今回はAmazon Linuxにしました。)

ストレージはそのままdatastoreを使います。

仮想マシンのバージョンはそのまま 8 で作成します。

ゲストOSはLinuxでその他のLinux(64ビット)を選択しました。
あとはCPUの数の設定、付与するメモリの設定、NICの数の設定等を行った後、ディスクの選択のところで「既存の仮想ディスクを使用」にチェックを付けます

次に先程アップロードしたvmdkファイルを指定します。

あとはデフォルトの設定のまま進んで仮想マシン作成を実行します。
するとAmazon Linuxの仮想マシンが出来上がります。

Amazon Linux 2を起動してみる

VMware vSphere ClientのコンソールでAmazon Linuxの画面を表示します。

順調にログインコンソールが出てきました!
さてログインしてみます。

ん?とここで疑問が。。。


初期のログインユーザ/ログインパスワードってなんだろ?
という事でドキュメントを見ろって事ですねw

Amazon Linux 2へログインするための準備をする

https://cdn.amazonlinux.com/os-images/2017.12.0.20171212.2/README.cloud-init のページにサンプルがありました。
要するにmeta-dataとuser-dataを作ってログイン情報を作れってことでした。
サンプルからmeta-dataを以下のように作成します。

local-hostname: yyyyyyyyyy ←<好きなホスト名に変更する>
# eth0 is the default network interface enabled in the image. You can
# configure static network settings with an entry like below.
#network-interfaces: |
#  iface eth0 inet static
#  address 192.168.1.10
#  network 192.168.1.0
#  netmask 255.255.255.0
#  broadcast 192.168.1.255
#  gateway 192.168.1.254

サンプルからuser-dataのファイルを以下のように作成します。

#cloud-config
# vim:syntax=yaml
users:
# A user by the name ec2-user is created in the image by default.
  - default
# Following entry create user1 and assigns password specified in plain text.
# Please not use of plain text password is not recommended from security best
# practises standpoint
  - name: user1
    groups: sudo
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    plain_text_passwd: < plain text password here >
    lock_passwd: false
# Following entry creates user2 and attaches a hashed passwd to the user. Hashed
# passwords can be generated with:
# python -c 'import crypt,getpass; print crypt.crypt(getpass.getpass())'
  - name: user2
    passwd: < hashed password here >
    lock_passwd: false
# Following entry creates user3, disables password based login and enables an SSH public key
  - name: user3
    ssh-authorized-keys:
      - < ssh public key here >
    lock_passwd: true
chpasswd:
  list: |
    ec2-user:xxxxxxxx ←<ec2-userのパスワードをプレーンテキストで指定>

ISOイメージを作成する

meta-data、user-dataを作成したらisoイメージを作成します。

isoイメージの作成はgenisoimageを使って作成できます。

Cloud-initのNoCloudのページに The filesystem volume label must be cidataと記述があるので、ボリュームラベルはcidataにしてisoイメージを作成します。

EC2(Amazon Linux)上に2つのファイルをアップロードして作成したmeta-dataとuser-dataを以下のコマンドでISOイメージを作成します。 作成方法についてはAmazon Linux 2 を VirtualBox でオンプレミスの開発環境に使用するを参考にさせて頂きました。ありがとうござます(m_m)

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

作成したISOファイル(seed.isoファイル)をローカルのWindowsマシンにダウンロードしてきます。

VMware vSphere Clientから「ローカルディスクのISOイメージに接続」を選択してさきほど作成したisoファイルを指定します。

isoをマウントした後にAmazon Linuxの仮想OSを再起動します。

ログインプロンプトの画面が表示されるので、さきほどuser-dataで設定したユーザ名とパスワードでログインします。さっきと見た目はなんにも変わってないので、ちゃんとuser-dataとmeta-dataが反映されているのか心配でしたが、



無事ログインできました。

あとはTeratermなどのSSHクライアントで外部から接続させる為の設定を行います。

TeratermでAmazon Linux 2へ接続できるように設定する

まずはsshd_configを編集します

$ sudo vi /etc/ssh/sshd_config

rootでのログインを遮断して、PasswordAuthentication yesを追加

PermitRootLogin no
PasswordAuthentication yes

下記2行を最後に追加してsshd_configを保存します。

DenyUsers ALL
AllowUsers ec2-user

sshdを再起動します。

sudo service sshd restart

ifconfigでIPアドレスを確認してteratermで接続します。

ifconfig等でIPアドレスを確認

user-dataで指定しているユーザ名/パスワードでログイン

Teratermで無事接続できたので、あとはAmazon Linuxを開発環境として利用したりすることが可能です。

まとめ

今回はVMware ESXiにセットアップしたので、Disk容量に心配なかったですが、ローカルPCとかにセットアップするときはシンプロビジョニングにして容量を減らす工夫も必要になってくるかと思います。

参考URL