Rails6の開発環境をAWS上に自動構築する②
Rails6の開発環境をAnsibleで自動構築する準備をします。
Ansibleを動作させる用のEC2インスタンスを作成する
大きな負荷がかかるものではないので、最小限のスペックでOKです。
・東京リージョン(ap-northeast1)、OSはAmazon Linux2
・t2.microまたはt3.micro(無料枠が残っていればt2、それ以降はt3の方が安い)
・ストレージ (EBS)は8GB SSDを割り当て
・インスタンスに割り当てるSecurity Groupの設定で、ポート80番(HTTP)を許可
・自動割当パブリックIPは有効
・インターネット側からアクセスできるようインターネットゲートウェイの設置、VPCの設定
詳細は省略します。過去の記事はこちら。
Ansibleをインストールする
Python-devel(Pythonライブラリ)、openssl(ssl接続に必要)、gcc(GNUコンパイラ)が必要です。
パッケージ管理システムのpipをインストールします。easy_installはインスタンス起動直後から使えるみたいですね。
Ansibleをインストールします。
Ansibleのバージョンを確認してインストール完了を確認します。
自動構築される側のEC2インスタンスをつくる
上図でいう左側、自動構築される側のEC2インスタンスを作成します。
インスタンスタイプなどの設定は、Ansibleサーバーと同じにしておきましょう。
作成したら分かりやすいようNameを付けておきます。
秘密鍵(〜.pem)を忘れずに保管しましょう。
Ansibleサーバーに秘密鍵をアップロードする
ローカルPCからscpコマンドで、先程の秘密鍵(〜.pem)をアップロードします。
Ansibleサーバーから自動構築対象のEC2にSSH接続してみる
問題無く接続できればOKです。AnsibleはSSH接続を通して、自動構築を行います。
次回は、構築対象を定義するinventlyファイル、site.ymlファイル、実際にリモートで実行するコマンド、スクリプトを記述するtasksファイルを説明しながら作成していきます。
仮想環境にIaCのスキルは必須
オンプレミスの物理サーバーなら基本手順に沿って人が構築することになりますが、クラウド等の仮想環境ではコード化して自動構築(Infrastracure as Code)できるようにしておくことが必須になります。2人一組で読み合わせをしながらコマンドを投入していた時代もありますが、今は構築にかかる工数を最小限とし、確実に構築できる「再現性」を上げて効率化する時代です。
現場で使っていたテキスト
※機密情報は破棄してます。3〜4年前だったと思いますが、たいした書籍も出版されておらず、Amazonの電子書籍を購入してプリントアウト、現場で使ってました。某メーカーのクラウドサービスの裏側を作っていました。知識ゼロの状態から、4ヶ月間「漬け」になりましたが、得たものは大きかったです。