DevOps/Terraform

[TF] AWS Resource 생성

Michael Kim 2021. 12. 19. 01:08

Terraform 코드를 통해 EC2를 생성할려고한다.

 

먼저 나는 awscli 설치를 하여 aws configure를 통해 access_key, secret_key를 선언하였다.

 

Terraform 코드를 사용하여 간단하게 EC2 Instance를 생성할 것이다.

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_instance" "ubuntu" {
# ami Ubuntu_20.04 TLS
  ami           = "ami-0454bb2fefc7de534"
  instance_type = "t2.micro"

  tags = {
    Name = "TerraformUbuntu"
  }
}

위의 코드를 init 후에 apply를 하면 plan이 나오고 생성할 것인지 묻는다.

yes를 입력하면 Creating...이 나오고 정상적으로 작동이 되면 Apply complete가 나오고 Resources 가 1 add 되었다고 나온다.

 

그러면 코드로 생성한 EC2 Instance를 AWS Console 상에서 확인해보자

코드에서 선언한 ami, instance_type, tags가 정상적으로 생성되었다.

 

EC2 Instance의 정보를 보면 VPC, Security Group, Key pair는 선언을 해주지않아 VPC와 SG는 Default로 되어있다.

Key Pair의 경우에는 기본값이 없으므로 비어있는걸 볼 수 있다.

 

기본적인 리소스 생성을 위한 실습이라 선언을 하지않았다.

 

실습 완료되었으면 terraform destroy나 alias 선언을 했다면 tf destroy를 사용하여 Terraform으로 생성된 리소스를 삭제하면 된다.


 

추가로 AMI의 경우 최신 버전이 릴리즈 되었을 때를 위해 filter를 사용하여 최신 AMI를 갱신할 수 있다.

자세한 사용법은 참조 1번 참고

data "aws_ami" "example" {
  executable_users = ["self"]
  most_recent      = true
  name_regex       = "^myami-\\d{3}"
  owners           = ["self"]

  filter {
    name   = "name"
    values = ["myami-*"]
  }

  filter {
    name   = "root-device-type"
    values = ["ebs"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

 


참조 

[1] https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami