はじめに
AWSコンソールでぽちぽち色々作ったけど、
どこで何の設定しているかすぐ忘れちゃうな〜
そんなときはTerraformの導入を検討すると良いよ!
Terraformとは?
Terraformとは、インフラをコードで管理する(IaC:Infrastructure as Code)ためのオープンソースのソフトウェアツールです。主な導入メリットは以下の通りです。
- 人為的なミスを削減できる
インフラをコードで管理することで、実行する担当者が異なる場合でも、同じ品質、環境が担保されます。 - バージョン管理ができる
Gitでバージョン管理することも可能になります。これにより、修正点や履歴を追いやすくなります。 - 人件費の削減につながる
Terraformではコマンド一つで自動的にインフラを構築できるので、オペレーションコストを大きく削減することができます。導入初期の習得コストはありますが、長期的には人件費の削減に繋がります。
Terraformの環境構築
tfenvのインストール
tfenvはTerraformのバージョンマネージャーです。これにより使用するTerraformのバージョンを簡単に切り替えることができます。
brew install tfenv
Terraformのインストール
以下のコードでは、先ほどインストールしたtfenvを使用して、最新バージョンのTerraformをインストールしています。
tfenv install latest
list-remoteコマンドで現在インストール可能なTerraformのバージョンを確認することができます。
tfenv list-remote
listコマンドで、インストール済みのバージョンを確認できます。
tfenv list
versionコマンドでデフォルトで使用するバージョンを確認できます。
terraform version
useコマンドで使用するバージョンを変更することができます。
tfenv use 1.4.6
AWSリソース(EC2)の構築
IAMユーザーの作成
AWSで「AdministratorAccess」権限を持つIAMユーザーを作成してください。
また、アクセスキーを生成して、csvファイルをダウンロードしてください。
具体的な手順は以下の記事が分かりやすかったです。
プロファイルの作成
IAMユーザーの認証情報を管理するためのプロファイルを作成します。
まずは、AWS CLIをインストールします。AWS CLIはAWSサービスをコマンド実行するためのツールです。プロファイルを作成するコマンドの実行に使用します。
brew install awscli
以下のコマンドでプロファイルを作成します。
「AWS Access Key」、「AWS Secret Key」をそれぞれ問われるので、IAMユーザーの情報(ダウンロードしたcsv)を入力します。
また、「Default region name」は特にこだわりがなければ、ap-northeast-1(東京リージョン)としましょう。
aws configure --profile terraform
プロファイルは「~/.aws/credentials」に作成されます。catコマンドで確認してみましょう。
cat ~/.aws/credentials
Terraformファイルの作成
いよいよ本題となる、Terraformのファイルを作成していきます。
VSCodeを使用している方は、以下のプラグインをインストールされることをお勧めします。
入力補完が効くようになります。
任意の作業用ディレクトリを作成します。
mkdir terraform
cd terraform
Terraformの設定情報を記述するファイルを作成します。
touch setting.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}
}
}
provider "aws" {
region = "ap-northeast-1"
profile = "terraform"
default_tags {
tags = {
key = "sample"
}
}
}
terraformブロックでは、Terraformの内容を定義するために使用します。
required_providersブロックでは、プロバイダを指定します。今回はAWSを使用します。
providerブロックでは、作成するリソースのリージョンを指定しています。また、profileでプロファイル名を指定しています。先ほど作成済みのterraformを指定しています。
続いて、作成するEC2インスタンスの情報を記述するファイルを作成します。
touch ec2.tf
resource "aws_instance" "sample" {
ami = "ami-0404778e217f54308"
instance_type = "t2.micro"
}
aws_instanceは、EC2インスタンスを作成するために使用されます。その後のsampleはリソースの名前です。適宜変更してください。amiでは、EC2インスタンスを起動する際のAMIのIDを指定します。
instance_typeでは、起動するインスタンスタイプを指定します。今回はt2.microを指定しています。
Terraformの実行
まずは、initコマンドで初期化を行います。Terrafromが必要とするモジュールをダウンロードします。
gitのinitとは違い、割と気楽に叩いて問題ないコマンドです。
terraform init
次にplanコマンドで「このコードにより、何が作成され、削除され、更新されるか」を確認することができます。
terraform plan
applyコマンドでplanした内容を適用することができます。
AWSコンソールで実際にEC2インスタンスが作成されているか確認しましょう。
terraform apply
最後に後始末として、destroyコマンドでリソースを削除します。
AWSコンソールでEC2インスタンスが削除されているか確認しましょう。
terraform destroy
終わりに
本記事はここまでとなります。
ご覧いただきありがとうございました。ご指摘等がございましたら頂けますと嬉しいです。
引き続き、プログラミングについて定期的に発信していきますのでよろしくお願いします!
また、もしよろしければtwitterもフォローしていただけると嬉しいです!🐢
コメント