Terraform プロバイダー

Terraform Purobaida



人気のあるオープンソースのコードとしてのインフラストラクチャ ツールの 1 つは、Terraform です。これにより、開発者はインフラストラクチャを宣言的に定義および管理できるようになります。これにより、基盤となるクラウド プラットフォームやサービス プロバイダーに関係なく、シンプルで一貫した構文を使用してインフラストラクチャ リソースを作成、管理、変更できます。

この記事では、さまざまなプロバイダーを使用して構成し、さまざまなクラウド プラットフォームやサービスと対話する方法について説明します。

Terraform プロバイダーの概要

Terraform プロバイダーは、Terraform を使用してさまざまなクラウド プラットフォームやサービスと対話できるようにするプラグインです。これらのプロバイダーは、Terraform 構成を、特定のクラウド プラットフォームまたはサービス上のリソースを管理するために必要な API 呼び出しに変換する責任を負います。







Terraform のプロバイダーの種類

の中に Terraform レジストリ では、次の 3 種類のプロバイダーが表示されます。



公式プロバイダー

公式プロバイダーは、Terraform を所有する HashiCorp 社によって維持されています。これらのプロバイダーは、十分に文書化された最新のプロバイダーが必要な場合に利用できる最良のオプションです。



AWS、Microsoft Azure、Google Cloud Platform プロバイダーは、Terraform の公式プロバイダーの例です。





パートナープロバイダー

サードパーティ組織はこれらのプロバイダーを維持し、HashiCorp と提携してサービスの公式サポートを提供しています。

GitLab、MongoDB、CloudFlare プロバイダーは、ユーザーが利用できるパートナー プロバイダーの一部です。



コミュニティプロバイダー

コミュニティ プロバイダーは通常、公式プロバイダーやパートナー プロバイダーによってサポートされていないクラウド プラットフォームまたはサービス上のリソースを管理したい Terraform コミュニティの個人または組織によって作成されます。

コミュニティ プロバイダーの例を次の図に示します。

Terraform プロバイダーの使用方法

Terraform プロバイダーを使用するには、使用するプロバイダーと、資格情報やリージョンなどの必要な構成パラメーターを指定するプロバイダー ブロックを構成ファイルに含める必要があります。

プロバイダーが構成されたら、Terraform 構成でプロバイダーによって提供されるリソースとデータ ソースを使用して、クラウド プラットフォームまたはサービス上のリソースを管理できます。

AWS クラウド プラットフォームに EC2 インスタンスを作成する簡単な Terraform 構成ファイルを作成してみましょう。

プロバイダー 「ああ」 {

バージョン = 「~> 3.0」

地域 = 「us-east-2」

}

リソース 「aws_インスタンス」 「myEC2」 {

どちら = 「ami-0a561b65214a47cac」

インスタンスタイプ = 「t3.小さい」

タグ = {

名前 = 「新しいインスタンス」

}

}

まず、プロバイダー ブロックを定義し、AWS プロバイダーとリソースが作成されるリージョンを指定します。次に、リソース ブロックを、リソース タイプとして aws_instance、リソース名として「myEC2」、属性として「ami」、「instance_type」、および「tags」で構成されるように定義します。リソース タイプは、プロバイダーとリソースの 2 つの部分に分けることができます。この場合、「aws」はプロバイダー、「インスタンス」はリソースです。また、10 個の EC2 インスタンスをプロビジョニングする必要がある場合は、値として 10 を指定して「count」属性を使用できます。

これで、terraform init、terraform plan、terraform apply コマンドの実行を含む Terraform フローを実行して、定義したリソースを作成できるようになりました。

Terraform AWS プロバイダーを使用すると、AWS マネジメント コンソールを使用せずに AWS クラウド プラットフォームにアクセスし、そのサービスを効率的に操作できます。

Terraform での複数のプロバイダーの使用

Terraform を使用すると、単一のプロバイダーを使用するのではなく、同じ Terraform 構成ファイル内で複数のプロバイダーを使用して、さまざまな種類のサービスやクラウド プラットフォームとやり取りできます。

理解を助けるために、Google Cloud Platform にコンピューティング エンジン、GitHub にリポジトリ、AWS クラウド プラットフォームに S3 バケットをデプロイする例を見てみましょう。

プロバイダー 'グーグル' {

プロジェクト = 「最初のプロジェクト」

地域 = 「us-west1」

}

プロバイダー 「ギットハブ」 {

トークン = 「YOUR_GITHUB_TOKEN」

}

プロバイダー 「ああ」 {

バージョン = 「~> 3.0」

地域 = 「us-west-2」

}

リソース 「google_compute_instance」 「gcpインスタンス」 {

名前 = 「新しいインスタンス」

マシンタイプ = 「n1-標準-1」

ゾーン = 「us-west1-a」

ブートディスク {

初期化パラメータ {

画像= 「debian-cloud/debian-10」

}

}

}

リソース 「github_リポジトリ」 「gitリポジトリ」 {

名前 = 「新しいレポ」

説明 = 「これが私の新しいリポジトリです」

}

リソース 「aws_s3_バケット」 「awsバケット」 {

バケツ = 「新しいバケツ」

acl = 'プライベート'

}

最初のステップとして、プロバイダー ブロックを定義して、プロバイダー (Google、GitHub、AWS) と、リージョン、プロジェクト名などの必要な情報を指定します。次に、3 つのリソース ブロック「gcpInstance」、「」を使用してリソースを宣言します。 gitRepo」と「awsBucket」。

まず、名前として「new-instance」、マシンタイプとして「n1-standard-1」、アベイラビリティゾーンとして「us-west1-a」を使用して、Google Cloud Platform にコンピューティング エンジンを作成します。ホスト OS として Debian を使用します。次に、「new-repo」という名前の GitHub リポジトリと適切な説明を作成します。最後に、名前として「new-bucket」、ACL (アクセス制御リスト) 値として「private」を使用して S3 バケットが作成されます。

これら 3 つの Terraform プロバイダーを使用すると、クラウド プラットフォームとそのサービスを簡単に操作できます。

Terraform プロバイダーを使用するためのベスト プラクティス

プロバイダーのバージョニング

プロバイダーのバージョンを指定する必要があります。これにより、一貫性が確保され、新しいバージョンでの重大な変更による予期せぬ動作が回避されます。

プロバイダー認証

API キーやアクセス トークンなどの安全な認証メカニズムを利用して、Terraform がそれぞれのクラウド プラットフォームまたはサービスと対話することを認証および許可できます。

プロバイダーのドキュメント

多くの場合、プロバイダーには特定の構成オプション、機能、および制限があります。このチュートリアルを理解すると、プロバイダーを効果的に使用し、よくある落とし穴を回避することができます。

プロバイダーのアップデート

プロバイダーは、バグ修正、パフォーマンスの改善、および新機能をリリースする場合があります。最新の状態を維持することで、最新の機能強化を活用し、プロバイダーのエコシステムとの互換性を維持できます。

コミュニティサポート

オンライン フォーラム、ディスカッション掲示板、コミュニティ チャネルを利用して、プロバイダーの使用中に遭遇する日常的な課題を解決できます。

エラー処理とトラブルシューティング

問題をより効率的に診断して解決できるように、プロバイダーのエラー メッセージ、ログ、およびデバッグ手法をよく理解しておくことをお勧めします。

結論

Terraform プロバイダーについて簡単に説明しました。さまざまなクラウド プラットフォームやサービスと対話するためにプロバイダーを使用および構成する方法、および複数のプロバイダーを使用してさまざまなクラウド プラットフォームやサービスにわたるリソースを管理する方法について、わかりやすい例を通じて説明しました。