GCEでCoreOSを使って簡単にMinecraftのServerを構築したいと思い、CoreOSの勉強がてらやってみました。
単純にdockerが使える軽量な環境ということで、CoreOSを採用。軽いということはいいことだ。
クラスタとか、全然関係ありません。
今回使わせてもらったdockerのimageは、こちら。
https://hub.docker.com/r/itzg/minecraft-server/
環境変数で、いろいろMinecraftの設定を行えちゃうのがすごい。
サービスの登録(まずは手動で)
CoreOSはsystemdを採用しているので、まずは/etc/systemd/system/配下にサービスを追加して確認します。
/etc/systemd/system/mc-vanilla.service
[Unit]
Description=Minecraft vanilla Server
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker kill mc-vanilla
ExecStartPre=-/usr/bin/docker rm mc-vanilla
ExecStart=/usr/bin/docker run -v /data:/data -e VERSION=1.10.2 -e EULA=TRUE -e ENABLE_QUERY=true -e PVP=false -e OPS=管理権限のマイクラユーザID -e WHITELIST=ホワイトリストのマイクラユーザID -p 25565:25565 --name mc-vanilla itzg/minecraft-server
ExecStop=/usr/bin/docker stop mc-vanilla
[Install]
WantedBy=multi-user.target
最初、ExecStart
の指定で/usr/bin/docker -d -it・・・
とバックグランド実行にしていたら、うまく起動しませんでした。もしかしてフォアグランドでないとダメなのかなぁと思い、-d -it
を削除。
で起動してみる。
$ sudo systemctl start mc-vanilla.service
で、停止。
$ sudo systemctl stop mc-vanilla.service
問題なければ、サービスを有効にする。
$ sudo systemctl enable mc-vanilla.service
うまく行かない時は、statusで確認する。
$ sudo systemctl status mc-vanilla.service
ファイルを修正した場合は、daemon-reloadする。
$ sudo systemctl daemon-reload
サービスの追加を自動で行いたいので、cloud-config.ymlを作成する
内容はさっきと一緒。
#cloud-config
coreos:
units:
-
name: mc-vanilla.service
enable: true
command: start
content: |
[Unit]
Description=Minecraft Vanilla Server
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker kill mc-vanilla
ExecStartPre=-/usr/bin/docker rm mc-vanilla
ExecStart=/usr/bin/docker run -v /data:/data -e VERSION=1.10.2 -e EULA=TRUE -e ENABLE_QUERY=true -e PVP=false -e OPS=管理権限のマイクラユーザID -e WHITELIST=ホワイトリストのマイクラユーザID -p 25565:25565 --name mc-vanilla itzg/minecraft-server
ExecStop=/usr/bin/docker stop mc-vanilla
[Install]
WantedBy=multi-user.target
GCEのインスタンス作成時に、cloud-config.ymlを指定する
gcloudコマンドを実行するマシン上にcloud-config.ymlを置いて、インスタンス作成時に--metadata-from-file "user-data=<cloud-config.ymlのファイルパス>"
を指定する。
ファイルをGCSに置いて指定する方法なないのかしら。。