やろうやろうと思ってできていなかった自宅サーバーのOSアップデートと、アプリケーションのDocker移行をこのGWでやってました。

サーバー構成図(変更前と変更後)

変更前
  • CentOS6
  • apache+mod_php(PHP5.4)で全てのアプリケーションを動かしていた
  • 設定変更時はファイルの日付で世代管理!
変更後
  • CentOS7
  • Docker(docker-compose)で分けているので、アプリケーションに応じてPHPのバージョンを変えている。(PHP7だと既存のPukiwikiが動かなかった…)
  • itamaeでプロビジョン(git管理,RaspberryPiのgitbucketサーバー)

移行時に困った点

移行時に困ったのはfirewalldとdockerの衝突でした。
標準搭載のfirewalldを使用するためにセキュリティ設定を入れていたのですが、dockerのコンテナ起動時にdocker自身がiptablesコマンドでDNATを追加しているらしく、それが失敗してdockerへ接続できないことがありました。
結局、良い解決方法が見つからず、firewalldは諦めてiptables-servicesを動かすことにしました。

移行して良かった点

docker-composeでアプリケーションを管理しているので、手元で色々やりやすくなりました。(検証とか)
ホストサーバーとアプリケーションがDockerを中心に分離出来ているので、管理する側としても状態が判別しやすくなりました。
今回itamaeを初めて使ってみましたが、普段仕事ではPuppet(どちらもRuby製のツール)を使っているので、erbなどは同じように使えてとても導入しやすかったように感じてます。
Gitで管理しているので、ファイルの日付による世代バックアップが不要になりました笑

今後の課題

今回はとにかくOSのアップデートとdockerへ移行することを目的にメンテナンスを実施したので、いくつかのアプリケーションは移行作業時には含まず、後回しにしたのでそれらをゆるりとdocker上で動かしていきたいです。