Terraform入門 AWS EC2インスタンスを立ち上げるサンプル
環境
AWS terraform
mac環境
概要
terraformでは、main.tf のような tfファイル を書き、terraformの各種コマンドを行うことで、クラウド上などにインフラリソースを構築することができます。AWSやAzure,GCPなどの providerを指定して使うようになっており、さまざまなクラウド環境の構築を行うことができます。
操作手順
1. aws configure などのコマンドによりaws_access_key_id や aws_secret_access_key等の認証情報をセットします。
認証情報ファイル
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
設定ファイル
[default]
region=us-west-2
output=json
[profile user1]
role_arn=arn:aws:iam::333999:role/user1role
source_profile=default
role_session_name=session_user1
region=us-east-1
output=text
[default]
region=us-west-2
output=json
[profile user1]
role_arn=arn:aws:iam::333999:role/user1role
source_profile=default
role_session_name=session_user1
region=us-east-1
output=text
[default] region=us-west-2 output=json [profile user1] role_arn=arn:aws:iam::333999:role/user1role source_profile=default role_session_name=session_user1 region=us-east-1 output=text
2.terraformの導入
$ brew install terraform
3.main.tfファイルを作成する
provider "aws" {
version = "~> 2.0"
region = "ap-northeast-1"
}
resource "aws_instance" "tf_test_instance1" {
ami = "ami-xxxd" #
instance_type = "t2.micro"
tags = {
Name = "tf_test(20231201)"
}
lifecycle {
prevent_destroy = true
}
}
provider "aws" {
version = "~> 2.0"
region = "ap-northeast-1"
}
resource "aws_instance" "tf_test_instance1" {
ami = "ami-xxxd" #
instance_type = "t2.micro"
tags = {
Name = "tf_test(20231201)"
}
lifecycle {
prevent_destroy = true
}
}
provider "aws" { version = "~> 2.0" region = "ap-northeast-1" } resource "aws_instance" "tf_test_instance1" { ami = "ami-xxxd" # instance_type = "t2.micro" tags = { Name = "tf_test(20231201)" } lifecycle { prevent_destroy = true } }
.terraformを初期化します
$ terraform init
4.terrafaromの実行
$ terraform plan
本番の実行
$ terraform apply
5.リソースを削除/削除防止
$ terraform plan -destroy
削除防止(lifecycleを指定する)
lifecycle {
prevent_destroy = true
}
lifecycle {
prevent_destroy = true
}
lifecycle { prevent_destroy = true }