34
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IaC入門 ~開発環境を整えることから始めるTerraform~

Last updated at Posted at 2025-12-17

はじめに

時代は、IaC(Infrastracture as Code)が主流ということで、コードに苦手意識ある私が開発環境を整え、Terraformの基本知識を学習したことのまとめです。

勉強方法

最初は独学で調べながら、既存のコードをWindowsでのWSL環境でapplyできるように、コードに変更を加えたりしていたのですが、基礎を学ばなければ応用はできぬと限界を感じたのでUdemyの講座を受講しました。
受講した講座を参考に、改めて、開発環境を整えるところからTerraformの基本の"き"
を記事を書いています。
具体的にはよく使うコマンドや必要不可欠な設定ファイルについて触れようと思います。
受講講座:AWS と Terraformで実現するInfrastructure as Code
※使用しているバージョンが古かったが、基本を学ぶには非常にわかりやすかった。

Terraformとは

Terraformは、クラウド上のサーバー(AWSのEC2など)やネットワーク、データベースといったリソースを、コード(HCLという言語)で記述し、そのコードを実行することで自動的に構築・変更・削除できるようにします。
主な特徴は以下の通りです。
コードによる管理: マウス操作ではなく、テキストファイルにインフラの構成を記述
マルチクラウド対応: AWS, Azure, GCPなど、様々なクラウドやサービスに対応
状態管理: terraform.tfstateファイルにより、インフラの現在の状態を把握し、必要な差分だけを適用できる

ローカル環境の整備

まずはTerraformが動かせるローカル環境を整えます。
※前提AWSの管理者権限アカウントを保有、私の環境がWindowsのためWindowsで、VScodeをしようして構築している話を記載しています。

AWS CLIインストール

AWSをコマンドで操作・管理する公式ツールです。
ブラウザにて「aws cli download」で検索していただき、上の方に出てくるAWS公式のページからインストーラをダウンロードして、インストールいただければ問題ないです。インストール時の設定もデフォルトで問題なかったです。
インストールが完了しているかは以下をコマンドプロンプトで実行してみて、AWS CLIのバージョンが返ってくればOKです。

aws --version

GitBathインストール

terraform推奨のWindowsでの開発環境です。ブラウザで「git download」と検索して、git公式のサイトにてインストーラをダウンロード、インストールです。インストール時にいろいろオプションがあり、基本はデフォルトで問題ないですが以下2点を変更しました。
・デフォルトのエディタを「Use Visual Studio Code as Git’s default editor」
・チェックアウトとコミット時に、ファイルの改行コードを自動変換するかを設定する個所で、デフォルトでは自動変換がオンになっているので、変換させたくない場合は一番下の「Checkout as-is, commit as-is」を選択しました。

以下をコマンドプロンプトで実行し、インストールが正常に完了していればgitのバージョンが表示されればOKです。

git version

ここから初期化作業です。以下コマンドで順に自身のEメールアドレス、名前を登録し、最後のコマンドで登録を確認します。

git config --global user.email "自分のEメールアドレス"
git config --global user.name "自分の名前"
git config --global --list

tfenv、Terraformのインストール

tfenvは、Terraformのバージョンを管理、切り替えるツールです。これをインストールしておくことでTerraformのバージョンをコマンドのみで切り替えできるようになります。
tfenvは、tfutils/tfenvのGitページからクローンを行います。GitBathにて以下のコマンドを実行します。

git clone https://github.com/tfutils/tfenv.git "任意のフォルダ"

クローンが完了するとフォルダ内 binフォルダがあるので、以下の手順でパスを設定します。
1、C:¥Users¥[自身のユーザー名] 配下に「.bashrc」というファイルを作成します。
2、「.bashrc」を開き、「export PATH=$PATH:"ダウンロードしたパス"/bin
」と記載して保存します。
3、GitBathを再起動して、以下コマンドを実行してバージョンが返ってくれば、パスが通っていることが確認できます。※この時、WARNINGが表示されるが無視で問題ないです。

tfenv

ここからようやくTerraformのインストールです。
1、GitBathにて、使用可能なTerraformのバージョンを確認します。

tfenv list-remote

2、必要なバージョンを以下のコマンドでインストールします。

tfenv install "最新バージョン"

3、以下コマンドでインストールしたバージョンを使用する設定をし、使用するバージョンが正常に表示されればTerraformが使用できる状態です。

tfenv use "使用するバージョン"
terraform version

Terraformの基本の"き"

開発環境も整ったので、Terraformでよく使うコマンドや重要なファイルについてまとめています。

コマンド

覚えておくべき、よく使うコマンド集です。

コマンド 動作 備考
terraform init Terraform初期化&必要なプラグインをダウンロード 新しいTerraformの環境構築時は必ず実施
terraform fmt 設定ファイルを標準的な形式にフォーマット
terraform plan 変更計画の確認 ErrorやWarningの確認が適応前に可能
terraform apply 適応 -auto-approveでyesの入力を省略できる
terraform destroy 削除 -auto-approveでyesの入力を省略できる

main.tfやproviders.tf

Terraformは複数のプロバイダー(AWS、Azureなど)に対応しているため、プロバイダー情報やTerraformのバージョン情報を記載する必要があります。
任意なファイル名で問題ないがmain.tfやproviders.tfにすることが多いです。

main.tf
terraform {
  required_version = ">=0.13" # Terraformのバージョン指定0.13以上
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 4.33.0"
    }
  }
}

provider "aws" {
  profile = "terraform"
  region  = "ap-northeast-1" #メインで使うリージョン(東京)
}

terraform.tfstate

このファイルはTerraformを1回でもapplyすると自動生成されます。
Terraformが管理するすべてのインフラストラクチャの「現在の状態」を記録しているJSON形式のファイルです。
Terraformはこのファイルを参照することで、実際のインフラ(AWSなど)とコード(HCL)の間の差分を把握し、次に行うべき変更(作成、更新、削除)を判断します。
あまり触ることはないですが重要ファイルです。

terraform.tfvars

よく使う変数(variable)をまとめるファイルです。このファイル名にしておくとTerraformが自動的に読み込んでくれます。以下のように記載します。

変数名 = "値"

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

Terraformコードで定義する際の、正確なリソース名、必須となる引数(パラメータ)、および利用可能な設定オプションを知るために、プロバイダー公式ドキュメントを確認します。AWSのページをリンクしておきます。
AWS Provider

HCL2 という言語

HCL2(HashiCorp Configuration Language Version 2)は、HashiCorp社が作成した言語です。JSONと違い、リソースの最終的な形で記述することが特徴の一つです。
以下に書き方の例を記載します。

主な型
<タイプ> "<ラベル1>" "<ラベル2>" {
  <属性> = <>
  <ネストされたブロック> {
    # ...
  }
}
AWSのVPCリソースの例
resource "aws_vpc" "main" {
  # resource はタイプ、"aws_vpc" はリソースタイプ、"main" はローカル名(ラベル)
  cidr_block = "10.0.0.0/16" # 属性 (Attribute)
  tags = {
    Name = "MyVPC" #任意のVPC名
  }
}

まとめ的な感想

今回はTerraformについての基本の"き"というのをテーマに、座学的なことを中心に書いてみました。Terraformに詳しい方からするとアレの話はどうした!!コレについては触れないのか!と言われそうですが、私が学んでいてまずは開発環境を整えんと始まらんということでそっちが中心になってます。他Terraformについては、ここは抑えておいた方が良いなというポイントを独断と偏見でまとめてみました。これからTerraformを始める人への一助となれば幸いです。

34
4
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
34
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?