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

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

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

 

toshioshimo.hatenablog.com

前回は、自動構築対象のEC2にコマンドが通るかテストしました。

続いて、対象のEC2に何らかのサーバープログラムをインストールして、起動させることをしてみましょう。いきなり完璧を目指すと何が原因で不具合が起きているのか分からなくなるので、少しづつ進める・確認する・NGなら元に戻してみる の繰り返しが重要です。

toshioshimo.hatenablog.com

f:id:TOSHIOSHIMO:20191215222807p:plain

Playbookを作成する

AnsibleはPlaybookと呼ばれるYAML形式のファイルを元に自動構築を行う仕組みです。

ホームディレクトリにtest.ymlという名前で作ってみます。

# sudo vi test.yml

内容は以下のように記述します。インデントの文字数や、ハイフン(-)、コロン(:)の使い方に注意です。

---
- hosts: all
become: yes
tasks:
- set_fact:
ansible_facts:
pkg_mgr: yum
- name: apache install
yum: name=httpd state=latest
- name: apache start
service: name=httpd state=started

内容をざっくり説明すると 

・/etc/hosts/ansibleにあるhostsファイルに記載のある全てのホストを対象にする

・sudo権限を有効にする(become)

・パッケージマネージャーとしてyumを指定する(ansible v1.8からdnfが優先になっているのでyum使用を明示する)

・httpサーバーのapacheの最新版をインストールし、サービスをスタートさせる

Ansibleを実行してみる

ansibleコマンドを実行してみます。

# ansible-playbook ./test.yml --private-key=./.ssh/(SSH接続のprivatekey).pem

結果

PLAY [all] **************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************
[WARNING]: Platform linux on host xxx.xxx.xxx.xxx is using the discovered Python interpreter at /usr/bin/python, but future installation of another
Python interpreter could change the meaning of that path. See
https://docs.ansible.com/ansible/2.10/reference_appendices/interpreter_discovery.html for more information.
ok: [xxx.xxx.xxx.xxx]

TASK [set_fact] *********************************************************************************************************************************
ok: [xxx.xxx.xxx.xxx]

TASK [apache install] ***************************************************************************************************************************
changed: [xxx.xxx.xxx.xxx]

TASK [apache start] *****************************************************************************************************************************
changed: [xxx.xxx.xxx.xxx]

PLAY RECAP **************************************************************************************************************************************
xxx.xxx.xxx.xxx : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

サービスのインストールと起動を確認する

自動構築された側にログインし、apacheのプロセスが動作しているか確認します。

# ps -ef | grep httpd
root 3334 1 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3335 3334 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3336 3334 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3337 3334 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3338 3334 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 3339 3334 0 11:15 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
ec2-user 3399 2597 0 11:16 pts/0 00:00:00 grep --color=auto httpd 

無事httpd(Webサーバー)が起動しています。パブリックIPまたはDNS名でアクセスしてみます。

f:id:TOSHIOSHIMO:20201015204448p:plain

無事apacheのスタートページが起動しました。

次回はRails6を自動構築します。

Ansibleは色々変わっていた

3〜4年前にAmazon Linux2は存在しませんでしたし、Ansibleのバージョンも上がってだいぶ作りが変わっています。記憶を辿りながら実行しましたが、つまずきも多かったです。