

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# の IaC ツールとしての Terraform の使用 AWS クラウド
<a name="terraform"></a>

[HashiCorp Terraform](https://developer.hashicorp.com/terraform) は、クラウドインフラストラクチャの管理に役立つコードとしてのインフラストラクチャ (IaC) ツールです。Terraform を使用すると、クラウドリソースとオンプレミスリソースの両方を、バージョン管理、再利用、共有できる設定ファイルで定義できます。その後、一貫したワークフローを使用して、ライフサイクルを通じてすべてのインフラストラクチャをプロビジョニングおよび管理できます。

デベロッパーは、[Terraform 言語 と呼ばれる高レベルの設定言語](https://developer.hashicorp.com/terraform/language)を使用します。Terraform 言語のネイティブで低レベルの構文は、[HashiCorp設定言語 (HCL)](https://developer.hashicorp.com/terraform/language/syntax/configuration) です。Terraform 言語は、人間が読み書きしやすいように設計されています。Terraform 言語を使用して、クラウドまたはオンプレミスインフラストラクチャの目的の終了状態を記述します。次に、Terraform はその終了状態に到達するための計画を生成し、その計画を実行してインフラストラクチャをプロビジョニングします。

**Terraform を使用する利点：**
+ Terraform はプラットフォームに依存しません。これは、任意のクラウドサービスプロバイダーで使用できます。インフラストラクチャは、 および他の多くのクラウドプロバイダー間で設定、テスト AWS 、デプロイできます。組織が複数のクラウドプロバイダーを使用している場合、Terraform はクラウドインフラストラクチャを管理するための単一の統一された一貫性のあるソリューションになります。マルチクラウドサポートの詳細については、Terraform ウェブサイトの[「マルチクラウドプロビジョニング](https://www.terraform.io/use-cases/multi-cloud-deployment)」を参照してください。
+ Terraform はエージェントレスです。マネージドインフラストラクチャにソフトウェアをインストールする必要はありません。
+ Terraform モジュールは、コードを再利用し、*DRY (Don't Repeat Yourself)* の原則に従うための強力な方法です。例えば、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、Amazon Elastic Block Store (Amazon EBS) ボリューム、および論理的にグループ化されたその他のリソースを含むアプリケーションに特定の設定があるとします。この設定またはアプリケーションの複数のコピーを作成する必要がある場合は、コード全体を複数回コピーするのではなく、リソースを Terraform モジュールにパッケージ化し、モジュールの複数のインスタンスを作成できます。これらのモジュールは、設定の整理、カプセル化、再利用に役立ちます。また、一貫性を提供し、ベストプラクティスを確保します。
+ Terraform は、インフラストラクチャの[ドリフトを検出および管理できます](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform) (Terraform ブログ記事）。例えば、Terraform によって管理されるリソースが Terraform の外部で変更された場合、Terraform CLI を使用してドリフトを検出し、目的の状態に戻すことができます。

**Terraform を使用することの欠点：**
+ クラウドプロバイダーに関連する新機能や新しいリソースのサポートは利用できない場合があります。
+ Terraform は、 のような状態を自動的に管理しません AWS CloudFormation。デフォルトではローカルファイルに保存されますが、[Amazon S3 バケット](https://developer.hashicorp.com/terraform/language/settings/backends/s3)または [Terraform Enterprise](https://developer.hashicorp.com/terraform/enterprise) を介してリモートに保存することもできます。
+ Terraform 状態には、データベースパスワードなどの機密データが含まれている可能性があり、セキュリティ上の懸念が生じる可能性があります。ステートファイルを暗号化し、リモートで保存し、ファイルバージョニングを有効にして、読み取りおよび書き込みオペレーションに最小権限を使用するのがベストプラクティスです。詳細については、[「 AWS Secrets Manager と HashiCorp Terraform を使用した機密データの保護](https://docs.aws.amazon.com/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/introduction.html)」を参照してください。
+ 2023 年 8 月、Hashicorp は [Mozilla Public License ](https://www.mozilla.org/en-US/MPL/)の下でオープンソースとしてライセンスされなくなると発表しました。代わりに、[ビジネスソースライセンス ](https://github.com/hashicorp/terraform/blob/b145fbcaadf0fa7d0e7040eac641d9aef2a26433/LICENSE)の下でライセンスされるようになりました。