3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TerraformのData Sources(データソース)とは

Posted at

Data Sources(データソース)ってなに?

  • Data Sources(データソース)は、外部データソースから情報を取得し、Terraform構成に組み込むための機能

この記事の目的

  • Data Sourceの役割、具体的な使用方法をサンプルコードを用いながら整理する

Data Sourceとは?

  • Data Sourceは、外部データソースから情報を取得し、Terraform構成に組み込むための特殊なリソースのこと
  • 取得した情報は、Terraform構成内の他のリソースの属性として使用したり、テンプレートファイルに組み込んだりすることができる

取得できるデータ例

  1. AWSサービスの情報: EC2インスタンス、S3バケット、VPC、IAMロールなど
  2. 外部APIの情報: GitHubリポジトリ、DNSレコード、OpenWeatherMap天気情報など
  3. ローカルファイルの情報: テンプレートファイル、JSONファイル、YAMLファイルなど

Data Sourceの利点

  • Data Sourceを使用する利点は、以下のようなことが挙げられる

インフラ構成のコードを簡潔に保ち、読みやすくする

  • 外部データソースから情報を取得することで、Terraform構成内に詳細な情報記述を必要としなくなり、コードを簡潔に保ち、読みやすくすることができる

インフラ構成を常に最新の状態に保つ

  • 外部データソースから情報を定期的に取得することで、Terraform構成を常に最新の状態に保つことができる

複雑なインフラ構成を容易に構築する

  • Data Sourceを組み合わせることで、複雑なインフラ構成を容易に構築することができる

Data Sourceの使い方

  • Data Sourceを使用するには、以下の手順が必要
  1. データソースプロバイダを定義する
  2. Data Sourceを定義する
  3. 取得した情報を他のリソースで使用する

1. データソースプロバイダの定義

  • データソースプロバイダは、Data Sourceが情報を取得する外部データソースの種類を定義する
  • Terraformには、様々なデータソースプロバイダが用意されている
  • 例えば、AWSサービスの情報であればawsプロバイダ、GitHubリポジトリの情報であればgithubプロバイダなどがある
provider "aws" {
  region = "us-east-1"
}

provider "github" {
  token = "GITHUB_TOKEN"
}

2. Data Sourceの定義

  • Data Sourceは、データソース名とローカル名を指定する
data "aws_ami" "example" {
  most_recent = true

  owners = ["self"]
  tags = {
    Name   = "app-server"
    Tested = "true"
  }
}
  • 例えば、AWS EC2インスタンスの情報であればaws_instanceリソース、GitHubリポジトリの情報であればgithub_repositoryリソースなど
data "aws_instance" "example" {
  id = "i-example"
}

data "github_repository" "example" {
  owner = "hashicorp"
  repository = "terraform"
}

3. 取得した情報を他のリソースで使用

  • Data Sourceで取得した情報は、data.resource_name.attribute_name の形式で他のリソースで使用することができる
  • 例えば、aws_instanceリソースのami属性に、data.aws_instance.example.amiの値を設定することができる
resource "aws_instance" "web" {
  ami           = data.aws_instance.example.ami
  instance_type = "t2.micro"

  tags = {
    Name = "sample"
  }
}

まとめ

  • TerraformのData Sourceは、外部データソースから情報を取得し、Terraform構成に組み込むための強力な機能

dataリソースの役割

  1. 外部データソースから情報を取得
  2. Terraform構成に情報を組み込む
  3. インフラ構成を簡潔に保ち、読みやすくする
  4. インフラ構成を常に最新の状態に保つ
  5. 複雑なインフラ構成を容易に構築する

所感

Data Sourceは、Terraformをより柔軟かつ強力に活用するための重要な機能だなぁと改めて思いました。
インフラ構築はシステムの要だと思うので、今後もどんどん勉強して使えるようになっていきたいなと思いました。

では!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?