3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity Build Server でライセンスを共有する

Last updated at Posted at 2020-12-17

#Unity Build Server とは?

いつもいつの間にか新しいサービスがリリースされている Unity さん。
今回は Unity Build Server なるものがリリースされていました。

名前から推測するに Unity プロジェクトのビルドのみを行うサーバーと思いきや『ライセンスサーバーとして機能させるもの』でした。

あまり頻繁にビルドしない端末にライセンスを割り当てるのはライセンス数が非常に勿体ないので、必要な時だけにライセンスを使えるフローティングライセンスは非常にありがたいです。更にいうと通常のライセンスよりも安く利用できるのでかなりお得です。

※ただし、このライセンスは Pro または Enterprise のライセンスを事前に契約しておく必要があります。あくまでビルド端末用のライセンスとしてお考えください。

Unity Build Server のメリット:

  • フローティングライセンスとして利用可能
  • 通常ライセンスよりも安い

ということで、いつもの如く Azure でライセンスサーバーをホストしてみようかと思います。

##作業内容

  1. ライセンスサーバーのセットアップ
  2. ライセンスサーバーの登録
  3. ライセンスのインポート
  4. ライセンスサーバー起動
  5. クライアントの接続

サーバーのセットアップは全て Aure VM 上で行っていますので以降のサーバー側のセットアップはリモートデスクトップ接続 (RDP) で行っています。

#ライセンスサーバーのセットアップ

##VM の起動

まずは Unity Build Server(以下ライセンスサーバー)として利用する VM を起動します。

VM の設定は以下のようにしました。

  • リソースグループ:Unity_Build_Server
  • イメージ:Windows Server 2016 Datacenter
  • 仮想マシン名:UnityBuildServer
  • サイズ:Standard_B2ms

ちなみに上記の VM 設定で年間契約で月間5千円ぐらいです。
VM のサイズは Standard_B1ms でもいけそうでその場合月間2千円ぐらいです。

image.png

今回はリモートデスクトップで接続してライセンスサーバーをインストールする必要があるので HTTP (80) と RDP (3389) の受信ポートを開いておきます。

image.png

##ライセンスサーバー用のライセンスの準備

ライセンスサーバーのライセンスは Unity の管理ページ のサイドバーにある『License servers』から確認できます。

image.png

image.png

ライセンスサーバーのライセンスがある場合は上記の画像のような状態になっていると思います。
今回は Azure には Windows Server の VM を立ち上げますので『Unity License Server Windows v1.8.0』を選択しました。

image.png

ダウンロードした zip ファイルのフォルダ名をUnityLicensingServerとリネームし、C ドライブ直下に配置します。

C:\UnityLicensingServer

次はコマンドプロンプトで上記のフォルダに移動してサーバーのセットアップを行います。

.\Unity.Licensing.Server.exe setup

構成に必要な項目は以下の通り

  • サーバー名
  • HTTPS の利用有無
  • 使用する NIC とポートの設定
  • 管理者の IP アドレス

image.png

上記の設定後にセットアップが完了すると、先程のフォルダ直下にserver-registration-request.xmlというファイルが出力されます。これは後ほどのサーバー登録必要なファイルです。

今回は以下のような設定にしました。

  • サーバー名:UnityBuildServer
  • HTTPS の利用の有無:利用しない
  • 使用する NIC とポートの設定:NIC はデフォルト、ポートもデフォルトの 80
  • 管理者の IP アドレス:設定なし

#ライセンスサーバーの登録

ライセンスサーバーのセットアップが完了したら次は Unity 側にサーバーの登録を行います。
『License servers > Upload license server registration』で先程の登録用のファイルserver-registration-request.xmlをアップロードします。
image.png
アップロードが完了すると『License servers』の画面が上記のように変化します。

これでライセンスサーバーとして登録されています。

#ライセンスのインポート

次にライセンスサーバーに利用可能なライセンスを割り当てる必要があります。
先程の画面にあった『Manage seats』でこのライセンスサーバーに割り当てるライセンスを設定します。
image.png
※注意:一度ライセンスサーバーにライセンスを割り当てるとシートを減らす事や再割り当てができなくなるらしいです。
image.png
割り当てが完了すると以下のようになります。
image.png
この時点でライセンスサーバーが利用可能な状態になりますが、実際に利用可能なライセンスはライセンスサーバーに対してインポートをする必要があります。

.\Unity.Licensing.Server.exe import [license archive path]

インポートするライセンスは管理ページの『Download licenses』を行うことで、ライセンスを含んだファイルがダウンロードできます。
image.png

#ライセンスサーバーの起動

##ライセンスサーバーのテスト

.\Unity.Licensing.Server.exe

実際にはサービスとして実行しますので、今回はライセンスサーバーが正常に動作するのかテストで起動します。
起動に成功すれば以下のようなオールグリーン状態になります。
image.png
この状態でライセンスサーバーに対して

http://<Server IP>/v1/status

を実行することで json ファイルが取得できれば正常にライセンスサーバーが起動しています。
このあとはサービスとして登録しますので、サーバーは終了しておいて問題ありません。

##ライセンスサーバーのサービス起動

ライセンスサーバーのサービス起動は以下のコマンドです。

.\Unity.Licensing.Server.exe create-service

一度、これを実行しておけば次回からはサーバー再起動時にも自動的にライセンスサーバーが起動します。
正常にサービスが起動すれば以下のようになります。

image.png

ちなみにサービスの停止・削除は以下のコマンドでいけます。

sc stop Unity.Licensing.Server
sc delete Unity.Licensing.Server

##VM の Windows Firewall の設定

これまではライセンスサーバー側の設定でしたが、Azure VM 側の設定も必要になります。
IIS 等の場合、自動的に Windows Firewall の設定を行ってくれますが、今回は自前で設定する必要があります。
具体的にはライセンスサーバーが使用する 80 ポートを開けます。

受信ルール (Inbound Rules) を追加します。新しいルールで選択します。
image.png

ルールのタイプは『ポート』を選択します。
デフォルトでは『プログラム』になっているので注意してください。
image.png

次にプロトコルとポートは『TCP』と『80』を指定します。
image.png

このポートに対するアクセス権は『Allow the connection(接続許可)』を選択します。
image.png

このルールを適用するタイミングには全てチェックします。
image.png

最後にこのルールの名前は『HTTP』としました。
image.png

#クライアントの接続

次はクライアント側の設定ですが先程のライセンスサーバーを配置したフォルダにあるservices-config.jsonがライセンスサーバーに接続するために設定ファイルとなっており、サーバーセットアップ時に自動生成され、内容は以下のように事前に設定されています。

{
  "licensingServiceBaseUrl": "http://10.0.0.4:80",
  "enableEntitlementLicensing": true,
  "enableFloatingApi": true,
  "clientConnectTimeoutSec": 5,
  "clientHandshakeTimeoutSec": 10
}

licensingServiceBaseUrl がライセンスサーバーの URL となりますが、今回は Azure 上に配置しますので VM のプライベート IP が指定されていますのでパブリック IP に変更します。
image.png

このファイルを macOS であれば/Library/Application Support/Unity/configに配置します。
デフォルトではconfigがありませんので新しくディレクトリを作成します。

※ただし、この時に注意しておかないといけないのが Unity 側で Personal ライセンスでいいのでライセンスを認識させておく必要があります。ライセンスがない状態で上記の設定を行うと Unity が起動しませんでした。

services-config.jsonが正常に認識されるとサイドバーにある『ライセンス管理』の項目がなくなります。

認識前
image.png
認識後
image.png

上記の状態で Unity プロジェクトを開くとフローティングライセンスを利用した状態になり Unity Build Server の設置が完了となります。

最後にはじめに Azure 側に設定した RDP は不要になりますので、設定で RDP は外しておきましょう。

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?