サーバーイメージの詳細設定¶
ここでは、独自の設定をサーバーイメージに実施するために必要な情報を説明します。
In This Section
はじめに¶
この解説書は、カスタムイメージを作成するためのガイドラインです。自分でカスタマイズしたサーバーイメージを作成するには、Packer、Docker、Nomad、Linux に関する高度な知識が必要です。
カスタムサーバーイメージの作成¶
カスタムサーバーイメージは、現在のサーバーイメージを基に作成する必要があります。また、ネーミングスキームに沿ったものである必要があります。イメージ名は、クラスタ作成時に terraform スクリプトが想定しているものと一致する必要があります。
AWS¶
AWS でのネーミングスキームは以下の通りです:
genvidtech-server-{{user `version` | clean_resource_name}}-{{isotime \"20060102-150405\" | clean_resource_name}}
イメージネームには 3 つの主要部分が必要です。
- 冒頭部は
[prefix]-server-
である必要があります。デフォルトでは、サーバー AMI のprefix
値はgenvidtech
です。 自分で指定することもできます。プレフィックスは、変数server_ami_prefix
に相当します。 - さらに、バージョンを追加する必要があります。そのバージョンは、タイプ
Major(int).Minor(int).Patch(int).Build(int)[.label(string)]
のパターンに適合する必要があります (ラベルの有無は任意) 。たとえば、バージョンは、1.25.0.156
または1.25.0.185.test
のどちらでも構いません。 - バージョンの次に、日時が必要です。次の形式に従う必要があります。
-yyyymmdd-hhmmss
。
イメージ名は、たとえば genvidtech
をプレフィックスとして使用している場合は genvidtech-server-1.26.0.236-20210227-005755
となります。
terraform コードは、正規表現に適合する 最新 のイメージを選択することに注意してください。
Azure¶
Azure でのネーミングスキームは以下の通りです:
"capture_container_name": "genvidtech-server"
"capture_name_prefix": "{{user `version`}}"
"storage_account": "{{user `storage_account_name`}}"
"location": "{{user `azure_location`}}"
"resource_group_name": "{{user `resource_group_name`}}"
Azure では、Packer を使ってカスタムの .vhd を構築し、それを ストレージアカウント に保持する必要があります。リソース グループ名 と ストレージアカウント を指定する必要があります。
重要: カスタムサーバーイメージを構築する場合は、ゲームも一緒に構築する必要があります。ツール (genvid-azure-image create-images
) は、サーバーイメージとゲームイメージの両方が、同じ ストレージアカウント と コンテナ にあることを想定しています。
次の 2 つのルールに従う必要があります。
- サーバーイメージ名は
[prefix]-server
である必要があります。Packer では、capture_container_name
になります。デフォルトでは、サーバーイメージのprefix
値はgenvidtech
です。自分で指定することもできます。プレフィックスは、変数server_iamge_prefix
に相当します。 - バージョンは、Packer では
capture_container_name
になり、自由に設定することができます。
ゲームイメージも提供する必要があるため、ゲームイメージの名前が [prefix]-wingame
であることを確認してください。プレフィックスは、変数 wingame_image_prefix
に相当します。 また、サーバーイメージと同じバージョンである必要があります。Azure のゲームのネーミングスキームについては、以下を参照してください。
"capture_container_name": "genvidtech-wingame"
"capture_name_prefix": "{{user `version`}}"
"storage_account": "{{user `storage_account_name`}}"
"resource_group_name": "{{user `resource_group_name`}}"
Nomad の構成¶
最初から Nomad の設定をする必要はありません。私たちの実装では、外部の Nomad 設定ファイルは、以下の場所にあることを想定しています。 /etc/nomad.d
必要な設定は、JSON ファイルや hcl ファイルとしてこのディレクトリに保存するだけです。
例¶
Genvid MILE SDK 1.24 以降では、Nomad が、ホストシステムを docker コンテナにマウントできません [1] その代わりとして、CSI ドライバを活用する必要があります。ここでは、高度なサーバーイメージのカスタマイズを使用して、これを有効にする方法を説明します。
CSI ドライバを活用するには、まず Nomad クライアントの設定に「option」を追加して、独自のイメージを使用できるようにする必要があります。必要な設定の例は以下の通りです。
{
"client": [
{
"options": [
{
"docker.volumes.enabled": "true"
}
]
}
]
}
参考
- https://www.nomadproject.io/docs/drivers/docker (Nomad での Docker ドライバの使用方法について)
- https://www.nomadproject.io/docs/configuration/client#host_volume-stanza (Nomad ホストボリュームについて)
- https://www.nomadproject.io/docs/configuration#load-order-and-merging (Nomad の複数の設定ファイルについて)
[1] | セキュリティ上の理由から、Genvid ではサポートされていませんのでご注意ください (ユーザーが誤ってシステムファイルを上書きしたり、システムにあると想定される他のファイルを上書きしてしまう可能性があります)。 |