1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~準備編~

Last updated at Posted at 2023-12-28

はじめに

私の友人がMinecraftのデータパック開発をしており、「データパック開発とかでCI/CD環境があればうれしいな~」みたいなお話があったので、じゃあ、作ってみようかなという感じで作りました。
まだ検証段階でセキュリティやら色々と対応する必要がありますが、ひとまず形になりましたので、やったことを整理しました。

ちなみに、私はデータパック開発はできませんし知識もないです。ちょっとfunctionを利用してデータパックをいじれるくらいです。

CI/CD環境構築の記事一覧

全部書くと長いので4編に分けて説明します。各編で記載されている内容をすべて実施していただければ、CI/CD環境が構築できる状態になるよう努めて参ります。

CI/CD環境を構築する上での環境

今回は以下のマシンでCI/CD環境を構築していきます。基本的にLinuxであれば問題ないです。

  • クラウド: AWS
  • OS: Linux(AL2023)
  • インスタンスタイプ: m6i.large(2コアのCPUと8GB以上のメモリを持つスペックがあればよい)

費用について

マシンを借りたり、クラウドを利用したりなどする人は気にするはずですので、1か月で大体どの程度の料金が発生するかを簡単に計算してみました。

以下の表は24時間31日稼働で計算したときの料金になります(1USD = 150円)
※インスタンスはスポットインスタンスを利用しています。

項目 価格
インスタンス利用料金(m6i.large) 4464円
EBS使用料(30GB - GP3) 432円
Route53 75円
パブリックIP使用料(2024年2月より) 558円
合計 5529円

本当にざっくり計算しただけですが、24時間起動しっぱなしでも5500円で抑えられるのは魅力的だと思います。(スポットインスタンスの料金設定がお得すぎる)
1日6時間利用するとした場合、約1800円までコストを下げることができます。さらに、週2での利用とした場合、もっとコストを下げられるでしょう。使用した分だけコストがかかるのがクラウドですので、この特徴を活用して費用を抑えましょう。

インスタンスの作成

※ 自宅サーバできる人はこの手順をスキップしてください。

基本Linuxマシンであれば、何でもいいです。私の場合はawsを利用しているので、以下の通りにEC2インスタンスを作成しました。ちなみに、以下のスペック、ストレージはGitLabとマイクラサーバを併用したときの必要最小要件なのでこれより小さいリソースで作成することはお勧めしません。

項目 設定値
インスタンス名 Mincraft_CICD
AMI Amazon Linux 2023 AMI
(AMIID: ami-012261b9035f8f938)
インスタンスタイプ m6i.large
キーペア 各自好きなものを設定
ネットワークの設定 デフォルト(人によっては設定)
セキュリティグループ SSH, Minecraft, GitLab ※この後記載
ストレージ 10GB(GP3)

セキュリティグループ作成

必要な通信のみを許可していきます。
基本はインバウンドルールを編集します。アウトバウンドは特別な理由がない限りはデフォルトである「すべてのトラフィック」を0.0.0.0/0で設定してよいです。
MinecraftやGitLabのソースにプライベートIPを設定しているのは、ホストマシンがアクセスするためのものですので、各自のサブネットに合わせて設定してください。ちなみに、172.31.0.0/16は初期で作成されるCIDRですので、特にVPCやサブネットなどの設定をしていなければ、172.31.0.0/16と設定してよいと思います。

  • SSH
タイプ プロトコル ポート範囲 ソース 説明
SSH TCP 22 自分のPCのグローバルIP ssh用
  • Minecraft
タイプ プロトコル ポート範囲 ソース 説明
カスタムTCP TCP 25565 0.0.0.0/0 Minecraftアクセス用
カスタムTCP TCP 25575 172.31.0.0/16(人によって設定は異なります) RCON用
  • GitLab
タイプ プロトコル ポート範囲 ソース 説明
HTTP TCP 80 GitLab利用する人のIP
もしくは0.0.0.0/0
GitLab-Webサービスアクセス用
HTTP TCP 80 172.31.0.0/16(人によって設定は異なります) GitLab-Webサービスアクセス用
SSH TCP 22 172.31.0.0/16(人によって設定は異なります) ssh用(なくても動きそうな気がする)

docker-composeをインストール

GitLabを建てるのにdockerを使うので、dockerとdocker-composeをインストールします。

  • dockerインストール
sudo yum install -y docker

docker -v
> Docker version 24.0.5, build ced0996
  • docker-composeインストール
# URLはdocker/composeリポジトリで確認してください
wget https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64
chmod +x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64  docker-compose
mv docker-compose /usr/local/bin/

docker-compose -v
> Docker Compose version v2.23.3

java インストール

Minecraftサーバを建てるので、javaをインストールします。Amazon Linuxにはデフォルトでamazon-correttoというOpenJDKのパッケージがあるので、これを使ってインストールします。

sudo yum install -y java-21-amazon-corretto

java --version
openjdk 21.0.1 2023-10-17 LTS
OpenJDK Runtime Environment Corretto-21.0.1.12.1 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.1.12.1 (build 21.0.1+12-LTS, mixed mode, sharing)

Route53のレコードを自動更新する設定を追加

ドメインがなくても問題ない(IPアドレスを直接叩く)場合は、この作業は実施しなくてよいです。

Elastic IPを設定していない場合、EC2インスタンスのパブリックIPはインスタンスを開始するたびに変わります。そのため、インスタンス開始時にRoute53のレコードを更新してsample.comのようなURLでアクセスできるようにします。なお、この設定を行うにはドメインを登録する必要があります。ドメインを持っていない人はこの記事を参考に登録してください。

レコードの自動更新については、以前投稿した記事に手順を整理しています。設定する際はこちらを参考にしてください。
aws インスタンス開始時にRoute53のレコードのIPアドレスを自動更新する

以上でCI/CD環境を構築するための準備が完了しました。
次はGitLabとGitLab-Runner編ということで、GitLabとGitLab-Runnnerのインストールと設定方法について説明します。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?