社内にあるVMware ESXiにAmazon Linux 2をインストールする
社内の方からVMware ESXiでAmazon Linux 2を動かしたいと要望があったので、早速動かしてみました。
Amazon Linux 2の特徴については【速報】AWS向けの新ディストリビューション Amazon Linux 2 を発表!で詳しく記載があるので割愛させて頂きます
インストールに利用した環境&ソフトウェア
- VMware ESXi 5.5
- VMware vSphere ClientがインストールされてるWindowsマシン
- VMware OVF Tool
- 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ツールをインストールします。
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と言うフォルダを作成します。
vmdkファイルの方はシックプロビジョニングのままなのでファイルサイズが1.3GBほどあります。 (シンプロビジョニングに変更することもできますが、Diskに余裕があるので今回はこのままアップロードします)
VMware ESXi上に新規仮想マシンを立ち上げる
アップロードが終わったら通常通りvSphere Clientから新規仮想マシンを作成します
任意で仮想マシンの名称を指定します(今回はAmazon Linuxにしました。)
ゲストOSはLinuxでその他のLinux(64ビット)を選択しました。 あとはCPUの数の設定、付与するメモリの設定、NICの数の設定等を行った後、ディスクの選択のところで「既存の仮想ディスクを使用」にチェックを付けます
あとはデフォルトの設定のまま進んで仮想マシン作成を実行します。 すると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とかにセットアップするときはシンプロビジョニングにして容量を減らす工夫も必要になってくるかと思います。