【Terraform】Windows10にインストールし、AWSのEC2を構築する。
コンソールで構築するのも良いんだけど、クリックするの疲れるよね。
はろー、yukiです。
今回は、インフラ構築を自動化するオープンソースのツールTerraformを使い、AWSのEC2を構築します。
まずは、Terraformを使えるようにします。
下のリンク先にアクセスし、OSに従ってパッケージをダウンロードします。
パッケージを解凍後、システムパスを含むディレクトリに移動します。
システムパスについては下記を参照。
僕の場合、Windows10ですので、同じ方は参考にしてください。
ーーーーーーーーーーーーーーーーーーーー
1. パッケージのダウンロード
ダウンロードし、解凍したTerraformをCドライブの直下に配置します。
2. 環境変数の設定
エクスプローラーを開き、アドレスバーに下記を入力します。
コントロール パネル\システムとセキュリティ\システム
左にある[システムの詳細設定]をクリックします。
「システムのプロパティ」が開き、[環境変数]をクリックします。
「環境変数」の[システム環境変数]にあるPathをダブルクリックします。
「環境変数名の編集」が開き、[新規]をクリックします。
Terrafromを配置したアドレスをコピーし、張り付けます(下記は例)。
C:\terraform\
3. 実行確認
コマンドプロンプトを開き、terraform
と入力し、Enterを押します。
コマンドが実行されれば、成功です。
ーーーーーーーーーーーーーーーーーーーー
次に、AWSのEC2を構築します。
Terraformで作業を始める前に、AWSの下準備をしてください。
アカウント作成: https://aws.amazon.com/jp/
AWS CLIインストール: https://aws.amazon.com/jp/cli/
TerraformでのAWS操作は下の公式ドキュメントを参考にしてください。
tfファイルに記述する各パラメータは、こちらが詳しいです。
Terraform初心者のためのガイドは下記です。こちらを参考に進めるのが良いです。
僕の場合は、下記になります。ご参考ください。
ーーーーーーーーーーーーーーーーーーーー
1. tfファイルの用意
設定ファイルはJSON形式で記述します。
ファイルの保存場所は任意ですが、Terraformがそのファイルを参照します。
そのため、このプロジェクト用にディレクトリを新規に用意すると良いです。
provider "aws" { profile = "default" region = "ap-northeast-1" } resource "aws_instance" "example" { ami = "ami-8e4181ef" instance_type = "t1.micro" }
provider
ブロックでクラウドを指定します。
Terraformは、ここで指定したクラウドのAPIを使用します。
※providerブロックには複数のproviderを指定できます。Terraformの例ではDatadogを指定していますが、Datadog(監視サービス)は今回使いませんので割愛します。
profileは構成設定と認証情報になります。AWS CLIで特に指定していない場合、defaultになっています。
cf.) 設定ファイルと認証情報ファイルの設定
regionは使用するリージョンを指定します(必ず指定する必要がある)。
resource
ブロックでリソースを指定します。
今回はEC2を構築しますので、aws_instanceを記述し、次にインスタンス名を決めます。
インスタンスの設定は、OSがCentOS、タイプがt1.microになります。
2. 初期化
コマンドプロンプトで、プロジェクトのディレクトリへ移動します。
terraform init
を実行します。
awsプラグインがダウンロードされ、ディレクトリが作成されます。
※terraform validate
を実行すると、tfファイルのチェックをしてくれます。
3. 構築と結果確認
terraform apply
を実行し、出力情報が表示されます。
※「Do you want to perform these actions?」で一時停止する
yes
と入力すると、構築が開始されます。
「Apply complete! Resources: 1 added, 0 changed, 0 destroyed.」が表示されると、完了です。
構築されたインスタンスの確認は、AWSのコンソールからでも良いですが、terraform show
でもできます。
ーーーーーーーーーーーーーーーーーーーー
ここからはおまけ。
・インスタンスを編集する
インスタンスタイプをt2.micro
にしてみましょう。
resource "aws_instance" "example" { ami = "ami-8e4181ef" instance_type = "t2.micro"
上記のようにthファイルを修正後、 terraform apply
を実行します。
yes
と入力する前に、「~ instance_type = "t1.micro" -> "t2.micro"」を確認します。
修正内容が正しいので、yes
と入力します。
「Apply complete! Resources: 0 added, 1 changed, 0 destroyed.」と表示されると完了です。
terraform show
で確認すると、変更されていることが分かります。
・インスタンスを削除する
terraform destroy
を実行します。
「# aws_instance.example will be destroyed」となり、各パラメータで「-> null」と表示されています。
yes
と入力します。
「Destroy complete! Resources: 1 destroyed.」と表示されました。
インスタンスが削除されたため、terraform show
を実行しても何も表示されません。
なお、tfファイルは残っているので、再び構築することもできます。
(似た構成のシステムが、手間なく構築できることになりますね)
以上。