第10章. 実際の使用例
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
、Terraformがコードとしてのインフラを管理する上で優れている様々な実際のユースケースを探ろう。複数の環境のオーケストレーションから可用性の高いアプリケーションのデプロイまで、様々なクラウドプロバイダーやツールにまたがる複雑なインフラの課題をTerraformがどのように解決できるかを示す。
これらの例を通して、主にAWSを中心とした様々なクラウドプロバイダーと連携し、Kubernetes、AWS Lambda、APIゲートウェイなどのツールとの統合を探る。また、GitOpsワークフローの実装やディザスタリカバリの自動化といった高度なトピックについても議論し、実際のシナリオにおけるTerraformの多機能性を紹介する。
この章が終わる頃には、複雑なインフラの課題を解決するためにTerraformを適用する方法をしっかりと理解しているだろう。実践的な例、ベストプラクティス、そしてあなたのプロジェクトにTerraformを実装する自信を身につけ、様々な環境やユースケースにおいてコードとしてのインフラを効率的かつ効果的に管理できるようになる。
10.1Terraformワークスペースで複数の環境を管理する
問題
組織が成長し、インフラが複雑化するにつれ、開発、ステージング、本番といった複数の環境を管理することは重要な課題となる。それぞれの環境は、異なるコンフィギュレーション、リソース、変数を持っている可能性があり、コードの重複やメンテナンス作業の増加につながる。これらの環境を手作業で管理することは、エラーが発生しやすく、時間がかかる。
解決策
Terraformにはワークスペースと呼ばれる機能があり、1つのTerraform設定内で複数の環境を管理することができる。ワークスペースを活用することで、TerraformのコードをDRY(Don't Repeat Yourself)に保ちながら、環境ごとに異なる変数、リソース、設定を定義することができる:
複数の環境を管理するには、 ...# Define the workspace variablevariable"environment"{type=stringdefault=terraform.workspace}# Configure the AWS providerprovider"aws"{region=var.region}# Define environment-specific variablesvariable"instance_type"{type=map(string)default={default="t2.micro"dev="t2.small"prod="t2.medium"}}# Create an EC2 instance based on the workspaceresource"aws_instance""example"{ami=var.ami_idinstance_type=var.instance_type[terraform.workspace]tags={Name="example-instance-${terraform.workspace}"}}