サーバーイメージの詳細設定

ここでは、独自の設定をサーバーイメージに実施するために必要な情報を説明します。

はじめに

この解説書は、カスタムイメージを作成するためのガイドラインです。自分でカスタマイズしたサーバーイメージを作成するには、Packer、Docker、Nomad、Linux に関する高度な知識が必要です。

カスタムサーバーイメージの作成

カスタムサーバーイメージは、現在のサーバーイメージを基に作成する必要があります。また、ネーミングスキームに沿ったものである必要があります。イメージ名は、クラスタ作成時に terraform スクリプトが想定しているものと一致する必要があります。

AWS

AWS でのネーミングスキームは以下の通りです。

      "ami_name": "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 SDK 1.24 以降では、Nomad が、ホストシステムを docker コンテナにマウントできません [1] その代わりとして、CSI ドライバを活用する必要があります。ここでは、高度なサーバーイメージのカスタマイズを使用して、これを有効にする方法を説明します。

CSI ドライバを活用するには、まず Nomad クライアントの設定に「option」を追加して、独自のイメージを使用できるようにする必要があります。必要な設定の例は以下の通りです。

{
  "client": [
    {
      "options": [
        {
          "docker.volumes.enabled": "true"
        }
      ]
    }
  ]
}

参考

[1]セキュリティ上の理由から、Genvid ではサポートされていませんのでご注意ください (ユーザーが誤ってシステムファイルを上書きしたり、システムにあると想定される他のファイルを上書きしてしまう可能性があります)。