モジュールとコードの再利用
Terraformモジュールで再利用可能なインフラをパッケージ化し、入力を受け取り、出力を公開して、設定をDRYかつ保守しやすくする方法を学びます。
「モジュールとコードの再利用」はCoddyKit上の無料Terraform Infrastructure as Codeレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTerraform Infrastructure as Code学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
なぜモジュールを使うのか
同じリソースを環境ごとにコピー&ペーストすると、差分やバグの原因になります。モジュールは、Terraformリソースをまとめた再利用可能でパラメーター化されたコンテナです。異なる入力値で何度も呼び出せるため、コードをDRYに保てます。
すべての設定はモジュール
terraform applyを実行するディレクトリがroot moduleです。そこから呼び出すモジュールがchild moduleです。つまり、すでにモジュールを使っています。単に追加しているだけです。
モジュールの構成
モジュールは、慣例的には次のような.tfファイルを含むフォルダーです。
main.tf— リソースvariables.tf— 入力変数outputs.tf— 公開する値
入力の定義
入力はモジュール内の変数として宣言し、呼び出し元が動作をカスタマイズできるようにします。
variable "bucket_name" {
type = string
}
variable "versioning" {
type = bool
default = false
}入力の使用
モジュールのリソースから、そのモジュールの変数を参照します。
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
}出力の公開
出力は、IDやARNなどの有用な値を呼び出し元に返します。
output "bucket_arn" {
value = aws_s3_bucket.this.arn
}モジュールの呼び出し
root moduleはmoduleブロックを使ってchild moduleを呼び出し、入力値を渡します。
module "logs" {
source = "./modules/bucket"
bucket_name = "app-logs"
versioning = true
}モジュールの出力の参照
設定内の別の場所でmodule.NAME.OUTPUTを使うと、モジュールの出力にアクセスできます。
resource "aws_s3_bucket_policy" "p" {
bucket = module.logs.bucket_arn
}モジュールのソース
sourceには、ローカルパス、Git URL、または公開Terraform Registryを指定できます。
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
}モジュールのバージョン管理
アップグレードを意図的に行えるよう、Registryモジュールでは必ずversionを固定してください。モジュールを追加または変更した後は、terraform initを実行してダウンロードします。
優れたモジュールの設計
モジュールは目的を絞り(1つの論理コンポーネントにする)、必要な入力だけを公開し、出力をドキュメント化してください。また、環境固有の値をハードコードしないようにします。巨大なモジュールを1つ作るより、小さく組み合わせやすいモジュールの方が優れています。
確認テスト
モジュールについての理解度を確認しましょう。
まとめ
モジュールによって、Terraformを再利用可能かつDRYにできます。
- モジュールは、変数(入力)と出力を含む.tfファイルのフォルダーです。
moduleブロックとsourceで呼び出し、module.NAME.OUTPUTで結果にアクセスします。- ソースにはローカル、Git、Registryを指定できます。
versionを固定し、initを実行してください。 - 小さく、目的を絞り、十分にドキュメント化されたモジュールを設計します。
よくある質問
「モジュールとコードの再利用」レッスンは無料ですか?
はい。「モジュールとコードの再利用」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Terraform Infrastructure as Codeコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
「モジュールとコードの再利用」で何を学びますか?
Terraformモジュールで再利用可能なインフラをパッケージ化し、入力を受け取り、出力を公開して、設定をDRYかつ保守しやすくする方法を学びます。 ブラウザで直接実行するハンズオンコードでTerraform Infrastructure as Codeを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Terraform Infrastructure as Codeを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTerraform Infrastructure as Codeは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「モジュールとコードの再利用」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTerraform Infrastructure as Codeレッスンでコードを書いて実行できますか?
はい。すべてのTerraform Infrastructure as Codeレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ProviderとResource
- 変数と出力
- State管理の基礎
- モジュールとコードの再利用