
このコースの概要や構築する題材、対象者や前提知識を確認します。
このコースを受講するときの進め方について説明します。
このコースで発生する可能性のある、AWS の料金について説明します。
このセクションで実施することと、使用する AWS と EC2 の概要を説明します。
EC2 インスタンスを作成する準備として、紐付けるセキュリティグループを作成します。
マネジメントコンソールで EC2 インスタンスを作成します。
EC2 Instance Connect で EC2 インスタンスに接続します。
apt コマンドを使って、EC2 インスタンスに手動で nginx をインストールします。
セキュリティグループに HTTP の許可を追加し、EC2 で公開した Web サイトにアクセスしてみます。
EC2 のユーザーデータの機能を使って、インスタンス起動時に nginx を自動でインストールする方法を学びます。
ユーザーデータの実行が失敗した場合に備え、ユーザーデータのログの確認方法を学びます。
このセクションのまとめをして、以後不要なリソースを削除します。
Terraform の概要と、Infrastructure as Code のメリット、Terraform がよく使われる理由を説明します。
このコースで Terraform をセットアップする方針を学びます。
このコースで Terraform の実装とコマンド実行を行う Cloud9 の環境を作成します。
Terraform の特定バージョンをインストールするためのツールとして、asdf をインストールします。
asdf を使って Terraform の特定バージョンをインストールします。
このセクションで実施することと、Terraform の実装の概要を説明します。
Terraform のプロバイダの概要を説明し、AWS Provider を設定します。
Terraform の最初の実装として、EC2 インスタンスのリソースを記述してみます。
Terraform の基本操作として、init・plan・apply・destroy の 4 つのコマンドを実行してみます。
Terraform に登場する基本概念として「モジュール」と「リソース」を学びます。
Terraform でセキュリティグループのリソースを記述しながら、リソースのドキュメントの見方を学びます。
EC2 インスタンスにセキュリティグループを紐付けるコードを記述し、リソースの Attributes の使い方の基本を学びます。
セキュリティグループのルールのリソースを記述します。
Terraform で使える型の基本を学びます。
ヒアドキュメントでユーザーデータを記述し、EC2 インスタンス起動時に自動で nginx がインストールされるようにします。
file 関数でユーザーデータを他のファイルから読み込む例を通して、Terraform の組み込み関数を学びます。
EC2 インスタンスのパブリック IP アドレスを表示する例で、Terraform のoutput について学びます。
SSH の接続可否をモジュールの外部から設定する例で、Terraform の variable について学びます。
このセクションのまとめをして、モジュールの構成要素を整理します。
Terraform、Ansible、Packer、Docker といった Infrastructure as Code のツールの使い分けを整理します。
Terraform の tfstate ファイルとバックエンドの概要を学びます。
Terraform のバックエンドとして使うため、S3 バケットを作成します。
Terraform で S3 バックエンドを使う設定を実施します。
S3 バックエンドを使う際の、DynamoDB によるロックについて説明します。
このセクションで実施する、モジュール化と複数環境の管理について説明します。
ディレクトリで複数環境を管理するため、environments/dev というディレクトリを作成し、コードを移動します。
modules/ec2 というディレクトリを作成して、EC2 関連のリソースのコードを移動します。
ルートモジュールから EC2 のモジュールを使うようにします。
dev 環境のルートモジュールに並べて、prod 環境のルートモジュールを作成してみます。
乱数による名前の衝突の回避を通して、Random Provider について学びます。
このセクションのまとめをして、Terraform の Workspace 機能による複数環境の管理について補足します。
モジュールの構成について解説された Srandard Module Structure を紹介します。
このセクションで実施することと、VPC の概要を説明します。
AWS のリージョン・AZ と、VPC のサブネットの構成の基本を学びます。
Terraform で VPC を作成します。
VPC のモジュールにサブネットのリソースの記述を追加します。
locals と count を使って、サブネットを AZ 毎に作成してみます。
count のデメリットと、for_each の使い方を学んで実装してみます。
VPC のモジュールの output を EC2 のモジュールの variable に指定する流れで、モジュールの連携方法を学びます。
サブネット ID をもとに VPC ID を取得する例で、Terraform の Data Source について学びます。
EC2 インスタンスに HTTP でアクセスできない原因を理解するため、パケットやルーティングの基本と、AWS のルートテーブル・インターネットゲートウェイについて学びます。
Terraform で作成したサブネットに対して、パブリックサブネットとしての設定を実施します。
ユーザーデータを実行し直して nginx をインストールするため、EC2 インスタンスを作り直します。
このセクションのまとめをして、VPC の公開モジュールを紹介します。
このセクションで実施することと、ELB(ALB)の概要を説明します。
マネジメントコンソールで ALB を作成する流れにふれてみて、ALB に登場する概念の複雑さを体感します。
Terraform のドキュメントを見ながら、ALB に登場する概念をクラス図で整理します。
Terraform で ALB のロードバランサー・リスナー・ターゲットグループを構築します。
Terraform で EC2 と ALB の紐付けを実装します。
モジュール間の依存関係を考えながら、EC2 のセキュリティグループルールを変更してみます。
このセクションで実施したことをまとめます。
このコースを終えたあと、さらにステップアップする方向性を紹介します。
このコースの終了後、片付けるべき内容を説明します。
近年、アプリケーションの実行環境として、AWS などのクラウドが使われることが非常に多くなっています。
とくにクラウド環境では、コードをもとにインフラを構築する「Infrastructure as Code」を実施する例がとても多いです。
Infrastructure as Code のツールはたくさんありますが、その代表的な 1 つが OSS の「Terraform」です。
Terraform の採用事例は非常に多く、AWS などのクラウドの活用を得意分野とするエンジニアであれば、是非とも習得しておきたい技術と言えます。
一方で、AWS には膨大な数のサービスがあり、すべてのサービスの具体的な使い方を丸暗記することは、事実上不可能です。
そのため、「概要は知っているものの具体的な使い方までは分からない」というサービスを、素早くキャッチアップするスキルも重要です。
そこでこのコースでは、Terraform を使うために必要な知識を、基本から実践的な内容まで、AWS でハンズオン形式で学んでいきます。
また、AWS で使うことになったサービスを Terraform を使って素早くキャッチアップする方法も解説します。
更新履歴
2024/08/05「(追記)AWS Cloud9 新規利用終了のための代替環境について」を追加
2025/05/17「(追記)バックエンドのロックについて」を追加