TerraformでEC2を作成し、Java 17とPostgreSQL 15を自動導入してみた
以前、AWSコンソールからEC2を作成し、Java 17とPostgreSQL 15を手動で導入しました。
今回はTerraformを使用して、EC2の作成からソフトウェアのインストール、削除までを自動化します。
TerraformとはAWSなどのインフラ構築自動化ツールで、IaCという略称で呼ばれたりもします。
関連記事:
以前、AWSコンソールからEC2を作成し、Java 17とPostgreSQL 15を手動で導入しました。
今回はTerraformを使用して、EC2の作成からソフトウェアのインストール、削除までを自動化します。
TerraformとはAWSなどのインフラ構築自動化ツールで、IaCという略称で呼ばれたりもします。
関連記事:
今回は、AWSのEC2を使用して仮想サーバーを作成する手順を紹介します。
前回まではテラフォームで構築していましたが、先ずはAWS勉強のために敢えてGUI設定し、後にテラフォームで自動化します。
まず、AWSマネジメントコンソールにログインします。
画面右上のリージョンを「アジアパシフィック(東京)」に設定します。
続いて、サービス検索から「EC2」を選択します。
Terraformを使ってAWSのVPCとサブネットを作成し、削除まで一連の流れを試してみましたので、やり方を後から追えるように記事として残します。
今回の操作では、AWSとTerraformを使用します。 環境設定方法は前回記事を参照してください。
main.tfには、AWS ProviderとVPC、サブネットを定義しました。
Terraformを使ってAWSのS3バケットを作成し、設定変更から削除まで一連の流れを試してみましたので、やり方を後から追えるようにコマンドなどを記事として残します。
今回の操作では、TerraformとAWS CLIを使用します。
事前にそれぞれインストールしておきます。
最近、マイクロサービスという言葉をよく見かけます。
マイクロサービスとは、従来だと単一でシステム化していた業務を区分ごとに小さなサービスに分割する考え方の枠組みです。
社内システムのアーキテクチャに組み込んで再設計してみても面白いと思ったので調べてみました。
従来型の複数機能を単一アプリケーションにまとめた構成を『モノリス』と呼びます。
例えば、ファイルを共有するシステムがあるとします。
このシステムには下記のような機能があります。
従来通り、AWS構築作業を手順書通りに手打ち…だと面倒なのとミスが出るリスクがある為、これを自動化したい。
IaCと呼ばれる手法があり、その中でも代表的なツールにテラフォームがある。このテラフォームはAWSのみではなく、他環境でも流用可能なため今回軽く触れてみた。
よくあるコマンド手打ちを自動化する.shという拡張子があるが、これと合わせて.tfなどのテラフォーム用の拡張子がある。
とりあえず何者なのかを整理してみた。
前回では、.installファイルを使用してテーブルを作成する方法について確認しました。
今回は最終回として、カスタムモジュールの処理をPHPUnitテストというもので試験してみます。
PHPUnitテストを使えば、単体試験をソースコード化することで自動化および再試験の簡略化が出来ます。
Drupalだと固有のUnitTestCaseを継承してテストクラスを作成できます。
final class Issue5MailTest extends UnitTestCase {
今回は、イベントの出欠回答時に通知送信するメールを例にします。
前回では、フォームから入力された内容をDBに保存するところまで追いました。
その際に保存先のテーブルは作成済みとしていましたが、今回はそのテーブルをDrupalでどのように作成しているかを確認していきます。
今回作成するのは.installファイルになります。
まず.installってなんなのかですが、Drupalのカスタムモジュールでインストールや更新時の処理を書くためのDrupal固有のファイルです。
拡張子は.installですが、中身はPHPで書きます。
PHP自体に.installという仕組みがあるわけではなく、Drupal側がこのファイルをPHPとして読み込んでいます。
前回でフォームを作成しました。しかし、入力内容がどのような流れでDBに保存されていくかを追えてなかったので、今回はそれを追って行こうかと思います。
前提として、フォームと保存先のテーブルは作成済みとします。テーブルの作成方法については次回の記事で取り扱います。※.install使用
前回にシステムの入り口として用意したフォームから出欠するしないというデータが送られてきます。もちろん各ユーザが入力します。
仮に出席しますといったデータが流れてきた場合は、出席扱いで名前などとセットでINSERTされます。