isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

インフラの設定を自動化しよう

今日はインフラの設定を自動化しようという話だ。

インフラの設定とは例えば

などだ。

インフラの設定で大事な価値観は「再現できる」「再現の手順が修正できる」だ。

まず再現できるとは、今現在動いている環境と同じ環境を別のサーバーやローカルパソコンに再現できるということだ。もし、本番サーバーに何度もログインして設定を変更しており、その履歴を残していなければ同じ環境の再現ができなくなる。すると、異常が発生したときに原因の特定が遅くなる。また、新規機能のための開発環境がすぐに用意できなければ開発が滞る。だから、再現の手順がきちんと残っておかなければいけない。

次に、再現の手順が修正できる必要がある。各OSや仮想化ツールにはスナップショットを取る機能が存在するのでそれを使えば再現自体は簡単だ。しかし、それだけではだめだ。設定を追加することはできるが、既存の設定内容を変更することができない。例えば、PHP5をインストールしていたサーバーをPHP7にアップデートするとしよう。もちろんUpdate自体は可能だしPHP5をアンインストールすることもできる。しかし、どうせならOSをクリーンインストールしてPHP7をインストールしたいだろう。

まず、手始めにできることとして再現手順書を作ることだ。しかし、これでは手作業でサーバーを設定しなければいけないし、日本語力が求められる。

もっといい方法がある。DockerやVagrantやChef(僕は使ったことがない)やAnsibleを使うといい。どれも本質的な機能は異なるがサーバーを自動で設定してくれる点とその設定内容を簡単なテキストファイルで表現できる点が一緒だ。その設定用のテキストファイルだけをgitで管理すれば上記の要件を満たしたインフラ自動化が達成できる。