Rails6の開発環境をAWS上に自動構築する②

Rails6の開発環境をAWS上に自動構築する②

Rails6の開発環境をAnsibleで自動構築する準備をします。

toshioshimo.hatenablog.com

f:id:TOSHIOSHIMO:20191215222807p:plain

Ansibleを動作させる用のEC2インスタンスを作成する

大きな負荷がかかるものではないので、最小限のスペックでOKです。

・東京リージョン(ap-northeast1)、OSはAmazon Linux2

・t2.microまたはt3.micro(無料枠が残っていればt2、それ以降はt3の方が安い)

・ストレージ (EBS)は8GB SSDを割り当て

インスタンスに割り当てるSecurity Groupの設定で、ポート80番(HTTP)を許可

・自動割当パブリックIPは有効

・インターネット側からアクセスできるようインターネットゲートウェイの設置、VPCの設定

詳細は省略します。過去の記事はこちら。

toshioshimo.hatenablog.com

f:id:TOSHIOSHIMO:20201003105225p:plain

Ansibleをインストールする

Python-devel(Pythonライブラリ)、openssl(ssl接続に必要)、gcc(GNUコンパイラ)が必要です。

# sudo yum -y install python-devel openssl-devel gcc git

パッケージ管理システムのpipをインストールします。easy_installはインスタンス起動直後から使えるみたいですね。

# sudo easy_install pip

Ansibleをインストールします。

# sudo pip install ansible

Ansibleのバージョンを確認してインストール完了を確認します。 

# ansible --version
ansible 2.10.2
config file = None
configured module search path = [u'/home/ec2-user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.18 (default, Aug 27 2020, 21:22:52) [GCC 7.3.1 20180712 (Red Hat 7.3.1-9)]

自動構築される側のEC2インスタンスをつくる

f:id:TOSHIOSHIMO:20201005214052p:plain

上図でいう左側、自動構築される側のEC2インスタンスを作成します。

インスタンスタイプなどの設定は、Ansibleサーバーと同じにしておきましょう。

作成したら分かりやすいようNameを付けておきます。

秘密鍵(〜.pem)を忘れずに保管しましょう。

f:id:TOSHIOSHIMO:20201008213811p:plain

Ansibleサーバーに秘密鍵をアップロードする

ローカルPCからscpコマンドで、先程の秘密鍵(〜.pem)をアップロードします。

# scp -i (Ansibleサーバーの秘密鍵).pem (自動構築される側の秘密鍵).pem ec2-user@13.230.164.53:/home/ec2-user/.ssh/
railstest.pem 100% 1704 86.4KB/s 00:00  

Ansibleサーバーから自動構築対象のEC2にSSH接続してみる

問題無く接続できればOKです。AnsibleはSSH接続を通して、自動構築を行います。

# ssh -i "(自動構築される側の秘密鍵).pem" ec2-user@(自動構築される側のプライベートIP)

次回は、構築対象を定義するinventlyファイル、site.ymlファイル、実際にリモートで実行するコマンド、スクリプトを記述するtasksファイルを説明しながら作成していきます。

仮想環境にIaCのスキルは必須 

オンプレミスの物理サーバーなら基本手順に沿って人が構築することになりますが、クラウド等の仮想環境ではコード化して自動構築(Infrastracure as Code)できるようにしておくことが必須になります。2人一組で読み合わせをしながらコマンドを投入していた時代もありますが、今は構築にかかる工数を最小限とし、確実に構築できる「再現性」を上げて効率化する時代です。 

現場で使っていたテキスト

※機密情報は破棄してます。3〜4年前だったと思いますが、たいした書籍も出版されておらず、Amazon電子書籍を購入してプリントアウト、現場で使ってました。某メーカーのクラウドサービスの裏側を作っていました。知識ゼロの状態から、4ヶ月間「漬け」になりましたが、得たものは大きかったです。

f:id:TOSHIOSHIMO:20201008221048j:plain 

入門Ansible

入門Ansible