ProviderとResource
TerraformがさまざまなクラウドやサービスのProviderと連携する仕組みと、個々のインフラ構成要素をResourceとして定義する方法を理解します。
「ProviderとResource」はCoddyKit上の無料Terraform Infrastructure as Codeレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTerraform Infrastructure as Code学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
Terraformの基本構成要素
ようこそ。Terraformを使うと、コードでクラウドインフラストラクチャを管理できます。しかし、Terraformは実際にどのようにクラウドプロバイダーと通信し、構築したいものを定義するのでしょうか。
このレッスンでは、2つの基本概念であるプロバイダーとリソースを紹介します。これらは、すべてのTerraform構成を支える基本要素であり、IaCの仕組みを理解するうえで重要です。
Terraformプロバイダーとは
プロバイダーは、Terraformが外部サービスやAPIと連携するためのプラグインだと考えてください。AWS、Azure、Google Cloudなどのクラウドプロバイダーだけでなく、GitHub、Kubernetes、Datadogなどのサービスも対象になります。
- 各プロバイダーは、そのサービスに必要な固有のAPI呼び出しを理解しています。
- 希望するインフラストラクチャを、そのサービスが実行できる操作に変換します。
- プロバイダーを設定して、使用するサービスと認証方法をTerraformに指定します。
プロバイダーブロックの宣言
プロバイダーを使用するには、Terraformの構成ファイルでproviderブロックを使って宣言します。このブロックでは、プロバイダー名と、クラウドプロバイダーのリージョンなど、必要な設定を指定します。
AWSプロバイダーの一般的な例を見てみましょう。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}プロバイダーのソースとバージョン
terraformブロックのrequired_providersセクションは重要です。プロバイダーの場所(source)と、使用するversionをTerraformに伝えます。これにより一貫性が保たれ、予期しない動作を防げます。
- Source:プロバイダーのレジストリパスを指定します(例:
hashicorp/aws)。 - Version:プロバイダーのバージョンを固定し、新しいリリースによる互換性を損なう変更を防ぎます。
- 続く
provider "aws"ブロックでは、このプロバイダーが管理するすべてのリソースに適用するAWSのregionなど、具体的な設定を行います。
Terraformリソースとは
リソースは、インフラストラクチャの1つの構成要素を記述するブロックです。仮想マシン(VM)、ネットワーク、データベース、ストレージバケット、ユーザーアカウントなどが該当します。
- 各リソースタイプは、特定のプロバイダーによって管理されます(例:
aws_s3_bucketはAWSプロバイダーが管理します)。 - リソースの望ましい状態を宣言すると、Terraformがその状態の実現に取り組みます。
- リソースには、サイズ、名前、場所などのプロパティを定義する引数があります。
リソースブロックの宣言
resourceブロックを使ってリソースを定義します。このブロックには、2つの文字列が必要です。
- リソースのタイプ(例:
aws_s3_bucket)。 - 構成内で一意となるローカル名前(例:
my_first_bucket)。
タイプはインフラストラクチャの構成要素の種類をTerraformに伝え、名前はTerraformが追跡するための一意の識別子になります。
resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}リソースの引数とプロパティ
resourceブロック内では引数を指定します。引数は、インフラストラクチャの構成要素のプロパティと設定を定義するキーと値のペアです。使用できる引数は、リソースタイプと、それを管理するプロバイダーによって異なります。
- AWS S3バケットの場合、引数には
bucket(一意の名前)、acl(アクセス制御リスト)、ラベル付け用のtagsなどがあります。 - Terraformはこれらの引数を使って、クラウド上のリソースを希望する状態に合わせて作成または更新します。
プロバイダーとリソースを組み合わせる
これは、シンプルで完全なTerraform構成です。AWSプロバイダーを宣言し、それを使って基本的なS3バケットを作成します。インフラストラクチャの定義を始めるために必要なのは、この1つのファイルだけです。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}Terraformワークフローとのつながり
Terraformコマンドを実行するとき、プロバイダーとリソースは重要な役割を果たします。
terraform init:必要なプロバイダープラグインをダウンロードします。terraform plan:プロバイダーを使ってクラウドAPIと通信し、望ましいリソースの状態を実現するために必要な変更を判断します。terraform apply:実際のクラウドインフラストラクチャに変更を加えるよう、プロバイダーに指示します。
これらは、インフラストラクチャを管理するための中核となる連携ポイントです。
クイックチェック:プロバイダーの役割
プロバイダーとリソースについて学びました。それぞれの役割を正しく識別できるか確認しましょう。
まとめ:プロバイダーとリソース
よくできました。このレッスンでは、Terraformで最も重要な2つの概念について、基礎を理解できました。
- プロバイダー:TerraformがさまざまなクラウドサービスやAPIと連携するために必要なプラグインです。使用するサービスと認証方法を指定するように設定します。
- リソース:構成内で宣言する個々のインフラストラクチャ構成要素です。タイプと引数を持ち、望ましい状態を定義します。
この2つの要素が連携することで、インフラストラクチャをコードとして効率的に定義・管理できます。
よくある質問
「ProviderとResource」レッスンは無料ですか?
はい。「ProviderとResource」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Terraform Infrastructure as Codeコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Terraform Infrastructure as Codeコースには全4レッスンが含まれています。
「ProviderとResource」で何を学びますか?
TerraformがさまざまなクラウドやサービスのProviderと連携する仕組みと、個々のインフラ構成要素をResourceとして定義する方法を理解します。 ブラウザで直接実行するハンズオンコードでTerraform Infrastructure as Codeを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Terraform Infrastructure as Codeを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTerraform Infrastructure as Codeは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ProviderとResource」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTerraform Infrastructure as Codeレッスンでコードを書いて実行できますか?
はい。すべてのTerraform Infrastructure as Codeレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ProviderとResource
- 変数と出力
- State管理の基礎
- モジュールとコードの再利用