AWSの勉強

クラウドの勉強をやろうと思って以下の本を買って、読み込みとハンズオンを行いました。
AWSクラウドの基本と仕組み
AWSではじめるインフラ構築入門 安全で堅牢な本番環境のつくり方

(一応このサイトもAWSのLightsailを使って雑に作ってます)

AWSクラウドの基本と仕組み 感想

クラウドとAWSを何も知らない人が入門として読むにはよいなと思いました。
また、AWSのサービスが浅く広くまとめられているのでイメージがつかめます。
NASとか使っているとS3とかよく出てきて、なんだかわかりませんでしたが信頼性の高いストレージなんだなーと浅くわかるようにはなりました。

AWSではじめるインフラ構築入門 安全で堅牢な本番環境のつくり方 感想

こちらはハンズオンを行う内容でした。
作成したものとしては
– ネットワーク (VPC)
– Webサーバ (EC2)*2
– ロードバランサ(EC2)
– データベース (RDS)
– メール用のストレージ(S3)
– メールサーバ(SES)
– 踏み台サーバ (EC2)
– キャッシュ(ElastiCache)
など
いろんなサービスがあるなーと感じながら、自分で操作して簡単に出来上がっていくので非常に面白かったです。細かく操作について書いてあるので、あまり迷うことなくできましたが、タイポに気づかずつらい場面もありました。
SESに関しては画面が結構変わってましたが、何とか出来ました。左側のメニューでドメインやEmailが分かれておらず全て「Verified identities」にまとまっているようでした。
書籍だとやはりクラウドの更新頻度についていくのが大変ですね。

AWSだと、サーバ事態にネットワーク設定をしないので結構変な感じがありました。
VPCでネットワークの設定やルーティングをすると、EC2もそれを参照してやってくれるので、いつも設定している身としては楽だけど違和感がすごいです。

Linuxの知識等がないとコマンドうったり、ローカルからサーバへのsshで引っ掛かりそうだなと思いました。

後日、AWSの課金額がきましたが、いつも500円くらいなのが1万ぐらいになってて短期間で頑張ればよかったなと思いました。ただ、初期導入コストがほぼなしでこれだけの規模のものを個人で展開できるのは改めてクラウドの良さだと感じました・

factorioサーバをたてる

factorioサーバを立てたくなったため、たてました。立てるまでの流れを雑に書きます。
参考
factorio jp wiki

サーバの選定

グローバルIPアドレスの固定がオンプレだとできる環境が現在ないため、どこかのサービスを利用することにしました。調べていくとFactorioのサーバ初期設定が含まれているサービスがありました。
ConoHa VPS
簡単そうだし、これでいいかと思いとりあえずはじめめてみました。
月額968円の1GB 2CPU SSD100GBのプランです。

こんな感じでポチポチしてたらできあがりました。
あとは、できあがったサーバのIPv4アドレスを確認して、Factorio側で接続したらOKです。

問題が…

接続も無事完了したのですが、サービス側で設定をされたので、カスタマイズ方法がわかりません。ゲームログイン時のパスワードをかけたり、modの追加のやりかたがわからず、一から建てることにしました。サーバの再選定はめんどくさいので、同じプランで素のUbuntuから建てることにしました
(Alma LinuxやRockey Linuxも対応してるんだなぁと思いました。)

こんな感じで設定しました。

出来上がったサーバーにWebブラウザからコンソール接続。
rootアカウント、サーバ作成時に設定したパスワードを入力しログイン。
まず、Firewallの設定を行いました。

#firewallサービスのインストール
apt install firewalld

#デフォルトのzoneをdropに変更
firewall-cmd –set-default-zone=drop

#許可するサービス、ポートの設定 Factorioで使うデフォルトのポートは UDPの34197
firewall-cmd add-service=ssh –permanent
firewall-cmd add-port=34197/udp –permanent

# 上記設定の適用
firewall-cmd –reload

つぎに必要なファイルを取ってきます。この作業は自分のPC側で行って、SCPでサーバーに持っていきました。
HeadlessのFactorioのファイルを公式からダウンロードします
アカウントがない場合は作成してください。
右下の頭のないペンギンをクリックするとダウンロードできます。 (ちょっとかわいそうなアイコンだなと思いました)。


ダウンロードしたファイルををscpを使ってサーバへ送ります。
scp factorio_headless_x64_versionnum.tar.xz root@サーバーのIPアドレス:/tmp

#サーバー側で受け取ったファイルを展開します
cd /tmp
tar Jxvf factorio_headless_x64_versionnum.tar.xz

展開したファイルの実行ファイルがある場所まで移動し、セーブデータを作成します
cd factorio/bin/x64
./factorio –create ../../saves/hogehoge.zip

# 起動して、Ctrl + cで終了すると、mod用のフォルダが作成されます
./factorio –staret-server hogehoge.zip

次にfactorioを遊ぶ環境を準備していきます
ローカルPCで遊びたい環境に設定したfactorioを新しくはじめます。ゲームが始まったらセーブを行い、作成したセーブデータをサーバーに送ります。
作成したセーブデータは、以下のディレクトリにzipファイルでおいてあります。C:\Users\%USERNAME%\AppData\Roaming\Factorio\saves

作成したセーブデータをサーバーに送ります
scp savedata.zip root@サーバーのIPアドレス:/tmp/factorio/bin/x64

追加したいmodを公式から手動でダウンロードします
ダウンロードしたmodをすべてzipのままサーバーへ送ります
scp mod.zip root@サーバーのIPアドレス:


サーバー側の作業
mod-list.jsonの書き換え
modはディレクトリに入れるだけでなく有効化するmodを以下のjsonファイルで有効化する必要があります。modの名前とenabledにtrueを入れると有効化されます。
/tmp/factorio/mods/mod-list.json

{
  "mods":
  [
    {
      "name":"base",
      "enabled": true
    },
    {
      "name":"bobassembly",
      "enabled": true
    },    
  {
      "name":"bobclasses",
      "enabled": true
    },
    {
      "name":"bobelectronics",
      "enabled": true
    },    {
      "name":"bobenemies",
      "enabled": true
    },
    {
      "name":"bobequipment",
      "enabled": true
    },    {
      "name":"bobgreenhouse",
      "enabled": true
    },
    {
      "name":"bobinserters",
      "enabled": true
    },    {
      "name":"boblibrary",
      "enabled": true
    },
    {
      "name":"boblogistics",
      "enabled": true
    },    {
      "name":"bobmining",
      "enabled": true
    },
    {
      "name":"bobores",
      "enabled": true
    },    {
      "name":"bobplates",
      "enabled": true
    },
    {
      "name":"bobpower",
      "enabled": true
    },    {
      "name":"bobrevamp",
      "enabled": true
    },
    {
      "name":"bobtech",
      "enabled": true
    },    {
      "name":"bobvehicleequipment",
      "enabled": true
    },
    {
      "name":"bobwarfare",
      "enabled": true
    },    {
      "name":"clock",
      "enabled": true
    }
  ]
}


server-settings.example.jsonのコピーと書き換え
サーバーの設定を変更します。参加にパスワードが必要など。
Wikiを参照して作りました。

サーバープログラムの実行
cd /tmp/factorio/bin/x64/
./factorio –start-server savedata.zip server-settings server-settings.example.json

あとで清書しよう…