vSphere 環境における Photon OS の簡単デプロイ

## Photon OS とは

Photon OS は、VMware が OSS として開発しており、クラウド環境に最適化され、非常に軽量で、ミニマリストな Linux OS です。
最近の新しめな VMware 製品でも、OS 部分に Photon OS が使われていたりします。

https://vmware.github.io/photon/docs/

長いこと Ubuntu を開発環境として使ってきた開発者の視点からすると、開発環境としてゴリゴリ使い倒すには、癖があったり、提供されるパッケージが限られていたりするので、う〜ん...ちょっと物足りないかな？という印象があります。
しかしながら！それを補って余りあるくらい、Photon OS は簡単にデプロイできてしまうので、ちょっとしたクライアント VM が欲しい時や、Docker や Kubernetes などのコンテナホストが欲しい時には、とても重宝します！

今回は、そんなに簡単だと言うなら、どんなものなの？と言うことで、vSphere 環境における Photon OS のデプロイ方法を紹介いたします。

## 環境情報

特に必須の前提条件がある訳ではないですが、この記事を書く上で、どんな環境で行ったのかという情報です。

* vSphere 7.0u3
* Photon OS 4.0 Rev2

## Photon OS の取得

まず、下記のサイトから、Photon OS の OVA を取得します。

https://github.com/vmware/photon/wiki/Downloading-Photon-OS

今回は、下記↓のリストの一番下の `OVA with virtual hardware v11` を選択しました。

![Screen Shot 2022-04-13 at 18.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/d117c237-a669-e823-c6c0-63ebc2a2af24.png)


この時、もしお使いの vSphere 環境がインターネットに接続できる環境であれば、OVA を DL する必要すらありません！
リンクを右クリックして、リンク先のアドレスをコピーして、控えておけば十分です。

## Photon OS のデプロイ

先に取得した OVA ファイルまたは、OVA へのアドレスを利用して、実際に vSphere 環境にデプロイしていきます。

まず、デプロイしたい ESXi Cluster または Resource Pool を右クリックして、[OVF テンプレートのデプロイ...] を選択します。

![Screen Shot 2022-04-13 at 18.22.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/92f513c4-83aa-c7e0-8a67-12c4b27e8995.png)


OVF テンプレートのデプロイのウィザードの最初のステップとして、先に取得した OVA ファイルまたは、OVA へのアドレスを指定します。アドレスを指定した場合は、下記のようなイメージです。

![Screen Shot 2022-04-13 at 18.23.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/4f39001f-8063-5cba-48bb-043914201ac2.png)

警告が出た場合には、内容を確認の上で、続行してください。

![Screen Shot 2022-04-13 at 18.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/394446fa-44c7-2ad3-88ed-af7e04306172.png)

以降、通常の OVF テンプレートのデプロイと同様に、ウィザードに従って、デプロイを完了させます。

![Screen Shot 2022-04-13 at 18.28.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/d5861309-cbf4-a363-9e2f-024c5885c334.png)

デプロイを待つ間に、次の準備をしておきます。

## 仮想マシンのカスタマイズ仕様の作成

https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-EB5F090E-723C-4470-B640-50B35D1EC016.html

ここで突然、仮想マシンのカスタマイズ仕様が登場しますが、これが Photon OS のデプロイが簡単である理由です。

この機能は、Guest OS に vmware-tools がインストールされていることを前提に、ホスト名や、タイムゾーン、ネットワーク、DNS を予め設定したプロファイルに基づいて、VM に直接ログインすること無く、vCenter の UI から設定できてしまう機能です。

Photon OS では、vmware-tools がプリインストールされているので、OVA デプロイ直後から、この仕組みが使えます。

よって、本来であれば、OVA デプロイした後、VM を起動、一旦コンソールから入って、ネットワーク設定して... となるところ、この仕組みを使えば、VM を起動したら、もう SSH でアクセスできる！を実現します。

では、新しい仮想マシンのカスタマイズ仕様ウィザードを開始し、必要な設定を入れていきます。

名前は、任意ですが、私は分かりやすさのため、Guest OS の種類、設定するネットワークアドレス帯、ドメイン名を名前に入れるようにしています。
![Screen Shot 2022-04-13 at 21.34.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/74acb205-ec2c-8469-8dc9-b4e08d73742a.png)

Guest OS 内で設定されるホスト名ですが、分かりやすさのため、仮想マシン名をそのまま使うように設定しています。
![Screen Shot 2022-04-13 at 21.34.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/e12dfc9a-ed21-f88a-cfb2-1533df307b7b.png)

タイムゾーンは [アジア] -> [東京] で設定しています。
![Screen Shot 2022-04-13 at 21.35.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/4134aa48-dcfe-c2b2-3353-0f0c449cdd6e.png)

カスタマイズ スクリプトは、セキュリティの観点で、vmware-tools 側でデフォルト無効になっているので、今回は利用しません。
![Screen Shot 2022-04-13 at 21.35.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/f1d8ca60-ab28-4410-c096-38fbbfa86abe.png)
(参考) vSphere 7.0 での仮想マシンのカスタマイズ スクリプトの設定 (74880)

https://kb.vmware.com/s/article/74880?lang=ja

vNIC に対するネットワーク設定を行うため、[NIC1] を選んで [編集] をクリック。
![Screen Shot 2022-04-13 at 21.35.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/1c4e0f03-f05b-14fe-409a-04bc15c196a8.png)

実際に Guest OS に設定する IP アドレスは後から設定できるようにしつつ、サブネットマスクとデフォルト ゲートウェイを指定し、保存します。
![Screen Shot 2022-04-13 at 21.36.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/a69a727f-1287-5c3e-7027-c268479d400c.png)

設定した内容が [プロンプト表示] になっていることを確認して、次に進みます。
![Screen Shot 2022-04-13 at 21.37.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/94e57975-a4dd-ea86-7291-df4d94bd7808.png)


DNS サーバと、DNS 検索パスを設定します。DNS 検索パスを設定する時は、[追加] ボタンでちゃんとリストに追加されていることを確認してください。
![Screen Shot 2022-04-13 at 21.49.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/7ddd759e-3282-849e-0656-7dd1125650ce.png)

設定内容を確認し、保存します。
![Screen Shot 2022-04-13 at 21.38.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/d05a9886-ac9b-27b1-0336-94d7262250ad.png)

## 仮想マシンのカスタマイズ仕様の適用

OVA のデプロイが完了していれば、VM を起動する前に、先ほど作成した仮想マシンのカスタマイズ仕様を適用します。

まず、VM のサマリページの [アクション] から、[ゲスト OS] -> [ゲスト OS のカスタマイズ...] を選択します。
![Screen Shot 2022-04-13 at 22.02.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/46d380b2-e08a-1967-a843-d9ee418074e4.png)

先ほど作成した仮想マシンのカスタマイズ仕様を選択します。
![Screen Shot 2022-04-13 at 22.05.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/baff7a48-4cd3-6e13-99db-1f135ad070f6.png)

すると、先ほど、Guest OS に設定する IP アドレスは後から設定できるようにしていたので、その入力が求められる旨が表示されるので、続行します。
![Screen Shot 2022-04-13 at 22.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/cbca1bd2-6798-a0b8-7090-bd0c0b07076d.png)

サブネット マスクと、デフォルトゲートウェイの部分は、既に設定しておいたものが埋められた状態で表示されるので、設定したいアドレス部分を埋めて保存します。
![Screen Shot 2022-04-13 at 22.08.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/e3e424f0-f2b0-3f53-6898-4678c42c869b.png)

これで、仮想マシンのカスタマイズ仕様の適用は完了です。簡単ですよね？

## 仮想マシンの起動と確認

では、いよいよ作成した VM をパワーオンします。

サマリページで、Photon OS の起動を待っていると、設定した IP アドレスが振られていることが確認できます。
![Screen Shot 2022-04-13 at 22.13.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245234/0d2b91ad-0bb2-3266-ea5d-1b461933f095.png)

## SSH アクセスと初期パスワードの再設定

確認できた IP アドレスに対して SSH でアクセスできることを確認します。また初回ログイン時に OVA で設定されている初期パスワードの再設定を求められるので、再設定します。

OVA の初期パスワードは、`changeme` になっています。

```text
$ ssh root@192.168.255.41
The authenticity of host '192.168.255.41 (192.168.255.41)' can't be established.
ECDSA key fingerprint is SHA256:ar9FgO9fHdoyAvcHTmVd+w429xdyKu8sUkSPSdexUck.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.255.41' (ECDSA) to the list of known hosts.
Password:
You are required to change your password immediately (administrator enforced).
Changing password for root.
Current password:
New password:
Retype new password:
 22:16:52 up 5 min,  0 users,  load average: 0.00, 0.06, 0.03
tdnf update info not available yet!
root@photon41 [ ~ ]#
```

無事にログインまで確認できました！

## まとめ

仮想マシンのカスタマイズ仕様を作成するステップで、キャプチャ画像の枚数が多かったので、少し分量がありますが、設定したいネットワーク毎に用意してしまえば、あとは使い回しができるので、非常に簡単にデプロイできます。

Linux OS の VM 作成においては、ネットワーク設定周りが面倒になりがちで、そこまで難しい操作ではないとは言え、いちいち `vi` で設定しているとタイプミスに気をつけつつ... となり、どうしても時間がかかります。

今回は、OVA の取得から、このネットワーク設定まで、可能な限り簡単な GUI 操作だけになるようにしています。さすがに何十台、何百台という VM を作成する場合には、何らかの自動化ツールを考えた方が良いですが、「とりあえず数台欲しい」みたいな場合には、ぜひ、お試しいただければと思います。