LoginSignup
0
0

Terraform is 何?

Posted at

概要

こちらの記事ではIaCツールでお馴染みのTerraformについて調べてみた結果をまとめてみました。

Terraformってなに?

Terraformというツールを端的にまとめるとこんな感じです

  • 米カリフォルニア州にあるHashiCorp社のIaCツール
  • 定義ファイルを書くだけでインフラの構築から廃棄までまるっと管理できる
  • Go言語で書かれており、AWS SDK for GOの中のややこしいSDKコードを抽象化してくれる
  • AWSに限らず、さまざまなクラウドで使うことができるツール

HashiCorpの始まり

Mitchell HashimotoとArmon Dadgarは 2012 年に HashiCorp を設立しました。これは、組織が強力なアプリケーションをより迅速かつ効率的に作成および提供できるようにすることを目的として、インフラストラクチャ管理における最も困難で最も重要な問題のいくつかを解決することを目的としています。

参照元
https://www.lac.co.jp/lacwatch/service/20200903_002270.html​
https://www.hashicorp.com/about
https://www.publickey1.jp/blog/17/hashicorp_interview01.html​

インタビュー記事の中で、橋本氏の発言がおおよそのツールを使う理由になるのかな~と個人的に考えています。該当部分を抜粋するとこんな感じです。

インタビュー

記者「Terraformと競合ツールの差別化って?」​

橋本氏「AWSだけ使うなら、Cfnとかでええやん。けどな、マルチクラウド使うんでっしゃろ?」​

橋本氏「ほな、うちのツール使ったら、同じ使い勝手で​色々管理できて便利でっせ」

記者「なるほど・・」​

Terraformの使い方(概要)

おおよその使い方概要は下記の通りです。

  1. インフラ構築
    1. terraform init​
      • 環境の初期化
    2. terraform plan​
      • IaCコードの適用に問題がないかdry-runする
    3. terraform apply​
      • IaCコードの適用
  2. インフラの廃棄​
    1. terraform destroy
      • IaCコードで作成した環境を全て削除する

TerraForm定義ファイルについて

定義ファイルの概要

定義ファイルの主要なものは以下の3つです。

  • main.tf​
    • コード本体を入れるファイル
  • variables.tf​
    • 変数を入れるファイル​
    • ※無くても動くが用意することが推奨​
  • outputs.tf​
    • サブ関数で得た結果をメイン関数に返す場合に使う
    • ※ファイル分割してモジュール化する場合に使う​
    • ※無くても動くが用意することが推奨

定義ファイルの構成要素

main.tf の構成要素​

terraform(必須)

どのような関連モジュールを使用するかという定義をします。
※下記はAWS環境の場合の例

terraform {​
  required_providers {​
    aws = {​
      source  = "hashicorp/aws"​
      version = "~> 3.0"​
    }​
  }​
}
provider(必須項目)

主にクラウド環境へのアクセス設定などに使用します。
※下記はAWS環境の場合の例

provider "aws" {​
    access_key = "ACCESS_KEY"​
    secret_key = "SECRET_KEY"​
    region = "ap-northeast-1"​
}
variable(任意項目)​

早い話が変数のことです​。
この項目は使っても使わなくても構いません。

variable “variable_name_here" {​
  description = “description here"​
  type = string​
  default = “default value here" ​
}
resource (必須項目)​​

どのようなリソースをどのように作成するかという設定です。
リソースの詳細設計はHashiCorpのドキュメントを参照してください。

resource "aws_ec2_host" "test" {
  instance_type     = "t2.micro"
  availability_zone = "ap-northeast-1"
  host_recovery     = "on"
  auto_placement    = "on"
}

参照元
https://registry.terraform.io/providers/hashicorp/aws/latest/docs

まとめ

Terraformの概要について記事にまとめてみました。どなたかのお役に立てれば幸いです。

お知らせ

Terraformでの登録で使用していたアドカレを急遽別のものに登録する必要が出たため、代わりの記事を登録するために新しく記事を作成しました。AWS周りやその他技術的要素が高い記事は会社のブログにも記載していますので、興味があれば読んでいただけると嬉しいです。

0
0
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
0
0