Rails6の開発環境をAWS上に自動構築する①
Rails6の開発環境をAWS上に自動構築する①
前回、Rails6の開発環境をまとめたので、これを自動構築に応用してみます。
なぜやるのか
環境構築の作業は、毎回同じ作業なので無駄です。いくら手順をまとめておいても手作業だとミスは起きますし(人間だもの)時間が勿体ないです。
3年前とまだ注目されていなかった時にAnsibleを使った経験があるのも理由です。広島には某メーカー系SIerのインフラ開発拠点が某新都心にあります。もう役に立たないかと思っていましたが分からないものです。
自動構築できれば、Railsのプログラミング教育環境を受講生分すぐに用意できそうでそれにも期待。
どうやるのか
構成管理ツールのAnsibleを使います。
・インスタンス側にエージェントを入れなくてもSSH接続さえできればOK
・同じクラウド内、オンプレからクラウドへ自動構築、もちろん逆も可能。
・各種コマンドの発行やAnsibleサーバー側にあるファイルのコピー等色々できる
AnsibleサーバーをEC2で起動して、inventory fileでホストを定義し、playbookと呼ばれるコードを実行します。/etc配下に設置される各種設定ファイルは、修正後のものを予めAnsible側に用意しておいて、コマンド発行時にコピーすることで解決できます。Ansible側のコマンドの引数を埋め込んだりもできた気がします。
本当はPrivate Subnetに置いた方が良いと思いますが、今回はお試しでPublic Subnetでやってみます。サーバーはAnsible専用としなくてもOKなので、インフラの構成管理ツールTerraformと同居させるのもいいかもしれません。
最近のエンジニア求人で良く見かけるホットなキーワードですが、結局スクリプトなのでトライアンドエラーで文法を覚えるしかないと思います。もちろん検証環境ですが、数えられないほど試行しミスをしました(そして記録しました)現場にいたときは、最終的に画面のボタン一発でOpenStackのインスタンスが自動構築できるよう画面設計もしたのですが、結構楽しかった覚えがあります。
やってみないと分からない
ミスが無いに越したことは無いですが、例えミスしてもドンマイ的な環境でないと、エンジニアはのびのび仕事できないと思います。誰もミスしようと思ってオペレーションしてないですからね。大手キャリアやSIerのデータセンターのレベルでも人為的ミスは起きます。報告書等は書く必要はありますが、個人が責め立てられることは一切無く淡々と建設的な対策をとっていくだけです。ミスの発生は将来のもっと大きなミスの予防に繋がります。