今回は、クラウド等のインフラを自動で構築できるTerraformについて説明します。
私が現在参画しているプロジェクトでは、Terraformを使用し、GoogleCloudサービスを構築することが要件になっています。
その中で学習した内容について説明します。
今後、私と同じようにTerraformを使用する方向けに、Terraform学習の手助けになれば幸いです!
Terraformの概要
Terraformとは、HashiCorp社が開発したクラウドやネットワーク等のインフラストラクチャを自動で構築することができるサービスです。
なぜ、このようなサービスがあるかというと、例えば、クラウドでインフラを構築する場合、毎回管理コンソールやコマンドを使用して環境を構築するのは手間です。そのような場合に、Terraformを使用し、インフラ環境の設定を記述することで、すばやくインフラを構築することができます。
また、基本となるインフラのテンプレートを作成することで、異なるインフラを構築する場合も、設定の値を変えることで、簡単に構築することができます。
Terraformのインストール方法
macOSにTerraformをインストールする方法について説明します。
インストールは、5ステップ!
- Homebrewのインストール
- バージョンマネージャーのインストール
- Terraformのインストール
- バージョン指定
- PATH設定
Windowsをご使用の方は、HashiCorp社のホームページからインストーラーをダウンロードしてインストールを行ってください。インストラーは、32bit版と64bit版の2種類があります。
1.Homebrewのインストール
まずは、macOSにHomebrewのインストールを行います。
Homebrewとは、一般的にパッケージマネージャーとよばれ、ソフトウェアをインストールするにあたり、依存関係を確認し、必要なソフトウェアをインストールしてくれるものです。依存関係とは、例えば、Adobe Illustratorをインストールするのに、Adobe Creative Cloudデスクトップをインストールしないといけない等の関係です。
Homebrewのインストールは、Terminalから下記コマンドを実行することでインストールすることができます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
上記のコマンドでインストールできない場合は、Homebrewのホームページを御覧ください。インストーラーが保存されているURLが変更されている可能性があります。
2.バージョンマネージャーのインストール
Terraformの複数バージョンを使用するために、バージョンマネージャーであるtfenvをインストールします。
Terraformは、HashiCorp社によって、逐次アップデートされています。バージョンによって、使用できる設定等が変わる可能性もあるので、複数のバージョンを使用することができるようにしておくと便利です。
tfenvをインストールするコマンドは下記になります。
brew install tfenv
3.Terraformのインストール
Terraformのインストールを行います。
まずは、現在インストールできるバージョンを確認します。インストール可能なバージョンを確認するコマンドは、下記になります。
tfenv list-remote
2022年12月時点、インストールできるバージョンは、「0.1.0」〜「1.4.0-alpha20221207」になります。alphaやbetaとバージョンについているものは、開発バージョンになりますので、基本は使わないでください。下記が「tfenv list-remote」を実行した場合の画面になります。
最新バージョンをインストールする場合は、下記コマンドになります。基本は、こちらを使用してください。
このコマンドは、現在リリースされている安定バージョン(v1.3.6)がインストールされます。(※2022年12月16日時点)
tfenv install latest
インストールが正常に完了した場合、下記画面赤枠部分のように「Installation of terraform v1.3.6 successful」という文字が表示されます。失敗した場合は、エラーになった部分をコピーしてGoogle検索を行って調べてください。
terraform version
バージョンを指定してインストールする場合は、下記コマンドになります。数字の部分が、バージョンになります。
tfenv install 1.3.5
4.バージョン指定
tfenvをインストールしてTerraformをインストールした場合、必ずどのバージョンを使用するか指定する必要があります。
バージョンを指定するコマンドは、下記になります。
tfenv use 1.3.6
正常にバージョンが指定されると、下記画面が表示されます。
インストールされているTerraformのバージョンを確認する方法は、下記になります。
terraform version
Terraformが使用できる状態の場合、下記画面のようにバージョンが出力されます。
5.PATH設定
ターミナルで「terraform」コマンドを使用するためには、PATH設定を行うと便利です。
PATH設定を行うと、Terminalで「terraform」コマンドを使用する際、terraformが保存されているPATH(ディレクトリ)を指定しなくてもコマンドを使用できます。これは、Terminalが該当のコマンドをmacOS内のフォルダの中から探してくれるからです。
下記コマンドを設定することで、terraformコマンドとそのコマンドが保存されているPATHを紐付けてくれます。要は、自分の家と住所を紐付けてくれる設定です。
export PATH=$PATH:/usr/local/bin/terraform
Terraformのインストール方法は、以上5ステップになります。
Terraformの基本手順
Terraformを実行する基本手順は以下になります。
- フォルダ作成
- 構成ファイルを作成
- Terraformの初期化
- 実行計画の確認
- Terrafomの実行
1.フォルダ作成
まずは、Terraformの構成ファイルを保存するためのフォルダ(ディレクトリ)を任意の場所に作成します。GUI上で作成してもCUIで作成してもよいです。今回は、「terraform」フォルダを作成します。
今回ホームフォルダ直下にフォルダを作成します。CUIでフォルダを作成する場合は、下記コマンドになります。
mkdir ~/terraform
※~(チルダ)はホームフォルダを表す記号になります。
2.構成ファイルを作成
Terraformに関連する構成ファイルを作成します。
今回は、Google Cloudサービスを使用して仮想マシンを作成する構成ファイルを作成します。作成については、Google CloudサービスのTerraformに関するこちらのドキュメントを参考しております。
Terraform構成ファイルの拡張子は、「.tf」です。今回作成するファイルは、「main.tf」になります。基本となる設定は、「main.tf」に記述します。
構成ファイルを作成する場合、「Visual Code Studio」や「Atom」等、テキストエディタを使用して作成してください。ちなみに、macOSのテキストエディットだと、Terraformのファイル「.tf」ファイルを作成しても、「.txt」ファイルで作成されるので、他のテキストエディタを使用する必要があります。私は、「Visual Code Studio」を使用しています。
下記が「main.tf」の内容になります。詳細は次回のブログで説明しますので、今回は、このような記述方法になるということだけ覚えておいてください。実際、下記記述には、GoogleCloudに関する認証情報は含んでおりませんので、その情報等が必要になります。
provider "google" {
project = "my-project-id"
region = "asia-northeast1"
}
resource "google_compute_network" "vpc_network" {
name = "my-custom-mode-network"
auto_create_subnetworks = false
mtu = 1460
}
resource "google_compute_subnetwork" "default" {
name = "my-custom-subnet"
ip_cidr_range = "10.0.1.0/24"
region = "asia-northeast1"
network = google_compute_network.vpc_network.id
}
# Create a single Compute Engine instance
resource "google_compute_instance" "default" {
name = "test-vm"
machine_type = "f1-micro"
zone = "asia-northeast1-a"
tags = ["ssh"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
subnetwork = google_compute_subnetwork.default.id
access_config {
# Include this section to give the VM an external IP address
}
}
3.Terraformの初期化
Terraformの初期化を行います。
こちらは、最初の1回のみ実行します。初期化を行うことで、Terraformを実行する上で必要なプラグイン等がインストールされます。
Terminalで該当のフォルダに移動した後、初期化コマンドを実行します。
terraform init
Terraformが正常に実行されると、下記画面赤枠部分のように「Terraform has been successfully initialized!」の文字が表示されます。
4.実行計画の確認
次に作成したTerraformの構成ファイルに記述されている内容が正しいか確認します。
その際に使用するコマンドが、下記になります。記述したTerraformの構成ファイルが間違っている場合、エラーが表示されます。
terraform plan
5.Terrafomの実行
実行計画が正常な場合、最後にTerraformを実行します。
実行するコマンドは、下記になります。
terraform plan
Terraformを使用してインフラを構築する手順は、以上5ステップになります。
備考:環境の削除
作成したクラウド環境を削除する場合は、下記コマンドを使用します。
このコマンドを使用することで、Terraformで作成した環境を削除することができます。
terraform destroy
まとめ
今回は、下記3点について説明を行いました。
- Terraformの概要
- Terraformのインストール方法
- Terraformの基本手順
Terraformを使用することで、クラウドの検証環境等を素早く作成することができます。また、クラウドエンジニアになるなら習得してほしい技術の一つです。是非、覚えておいてください!
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!