ほのぼの技術部

技術系記事

AzureでPalworldのプライベートサーバーを構築した(自動起動編)

前回

akinaudeku.hatenablog.com

概要

前回の続きの環境で、下記を行う。

これで、Palworldサーバーを、完全放置で好きな時間に動作させるようにします。

仮想マシンのPalworldサーバーの自動起動

systemdを使って、自動起動を行う。下記を用意する。

Palworldサーバーの実行スクリプトを作成

steamユーザーで実行スクリプトを作成します。

$ sudo -u steam -s
$ cd ~/
$ mkdir scripts
$ vi boot-pal.sh
#!/bin/sh
/home/steam/.steam/SteamApps/common/PalServer/PalServer.sh

実行権限を付けます。

$ chmod u+x boot-pal.sh
$ ls -l boot-pal.sh
-rwxr--r-- 1 steam steam 69 Jan 22 14:14 boot-pal.sh

今回は下記パスにファイルを作成した。

/home/steam/scripts/boot-pal.sh

serviceファイルの作成

マシン起動時にPalworldサーバーの実行スクリプトを実行させるシンプルなサービスを作成する。

内容はシンプルで、先ほどの実行スクリプトを「steam」ユーザーで実行してね、ということを書いた。

理解していない設定項目もあるので、とりあえず記載だけしている箇所もある。

$ cd /etc/systemd/system
$ vi boot-pal.service
[Unit]
Description=Auto Start Up Service for Pal
After=local-fs.target

[Service]
User=steam
Type=simple
ExecStart=/home/steam/scripts/boot-pal.sh

[Install]
WantedBy=multi-user.target

単体テスト

$ sudo systemctl start boot-pal
$ systemctl status boot-pal

Active: active (running)

の文言があって、普通にPalworldサーバー実行したときと同じようなログが表示されていればOK。

ゲームでも確認しておくと尚よい。

サービス自動起動有効設定

$ sudo systemctl enable boot-pal

起動確認

仮想マシンを再起動して、自動起動で動作しているか確認する。

$ systemctl status boot-pal
(省略)
$ ps aux | grep pal
steam        640  0.0  0.0   2616   536 ?        Ss   12:50   0:00 /bin/sh /home/steam/scripts/boot-pal.sh

ゲームで接続できるか確認する。

これで完了。

Azureで仮想マシン自動起動

仮想マシン自動起動には、Azure Automationを使用していきます。

  • Automationアカウントの作成
  • Runbookの作成
  • スケジュールの設定
  • 各種紐づけ

Automationアカウントの作成

Automationアカウント画面から、作成

  • リソースグループ(今回作成したリソースグループを指定)
  • 他任意で
  • マネージドID
    • システム割り当て(今回はこっちで)
  • ネットワーク接続
    • 一旦パブリックで

Runbookの作成

作成したAutomationアカウントのメニューからRunbook→ギャラリーを参照

「Start Azure V2 VMs」を選択

「選択」

Runbook名を入力して「インポート」

編集画面が表示されたら、「テストウィンドウ」へ遷移

以下のパラメーターに必要情報を入力して、「開始」

他の画面と違ってドロップダウンから選べないので打ち間違い注意。

上記3つはスケジュール設定の紐づけで再度入力するので、メモしておくとよい。

テストをすると完了と表示されるが、紐づけのエラーが起きるので、その設定を行う。

Automationと仮想マシンの紐づけ

仮想マシンのサイドメニューの「ID」

システム割り当て済みタブの状態をオンにする。

仮想マシンのサイドメニューの「アクセス制御(IAM)」

このリソースへのアクセス権の付与の項目から「ロール割り当ての追加」

「メンバー」

  • アクセスの割り当て先:マネージドID

マネージドIDの選択

サブスクリプション:従量課金

マネージドID:Automationアカウント

選択:<作成したAutomationアカウントを選択>

「選択」

「レビューと割り当て」

Runbookのテスト

先ほどのRunbookのテストを開始し、完了が表示され、エラーがなくなっていれば成功。

完了すると、対象の仮想マシンが起動しているはず。

スケジュールの設定

仮想マシン自動起動させたい時間に設定します。

Automationアカウントのサイドメニュー→「スケジュール」

スケジュールの追加

お好みで設定。

今回は夜だけ稼働させたいので、毎日夜起動するように設定した。

Runbookとスケジュールの紐づけ

Runbookを発行します。

Automation アカウントのサイドメニュー→「Runbook」

先ほど作成したRunbookの管理画面まで遷移。

Runbookのサイドメニュー→「概要」

「編集」→「ポータルで編集」

先ほど作成したRunbookの編集画面へ遷移し、「公開」

「スケジュールへのリンク」が押せるようになるので、押下

  • スケジュール
    • 「スケジュールをRunbookにリンクします」
    • 先ほど作成したスケジュールがリストにあるので、それを選択
  • パラメーターと実行設定
    • Runbookのテスト時と同様の値をそれぞれ入力します。

「OK」

Automationアカウントのサイドメニュー→「スケジュール」

先ほど作成したスケジュールを確認。

設定情報のリンクされたRunbookに先ほど設定したRunbookが表示されていれば紐づけ完了。

動作確認

あらかじめ仮想マシンを停止しておく。

  • 設定した日時に仮想マシンの起動を確認
  • ゲームからサーバーに接続確認

接続できれば完了。

おわりに

Palworldサーバーを完全放置の稼働に成功した。