0Pricing
DevOps Bootcamp · レッスン

ProviderとResource

TerraformがさまざまなクラウドやサービスのProviderと連携する仕組みと、個々のインフラ構成要素をResourceとして定義する方法を理解します。

「ProviderとResource」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全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チューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「ProviderとResource」で何を学びますか?

TerraformがさまざまなクラウドやサービスのProviderと連携する仕組みと、個々のインフラ構成要素をResourceとして定義する方法を理解します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ProviderとResource」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ProviderとResource
  2. 変数と出力
  3. State管理の基礎
  4. モジュールとコードの再利用
← DevOps Bootcampに戻る