Dev./Terraform

Terraform: AWS - VPC 생성

Ivan'show 2023. 9. 4.
728x90
반응형

Terraform 으로 AWS VPC 생성

AWS Provider: init

Customizing Configuration

provider 에서 제공하는 기본 틀을 바탕으로 configuration customizing

# infra/aws/main.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "ap-northeast-2"
}

# Create a VPC
resource "aws_vpc" "lion" {
  cidr_block = "10.1.0.0/16"

  tags = {
    Name = "lion-vpc"
  }
}

Key handling

NCP 서버를 열때에 처럼 ACCESS key 등 필요한 정보들을 넣어주자

vi ~/.zshrc

필요한 변수정보들은 docs 에서 찾아서 사용한다.

export AWS_ACCESS_KEY_ID="AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="AWS_SECRET_ACCESS_KEY"
export AWS_REGION="ap-northeast-2"
source ~/.zshrc

Execute code

access key 등 필요한 정보들을 등록해 두었으면 따로 물어보지 않고 바로 실행하게 된다.

terraform init
terraform plan
terraform apply

지역을 설정한대로 바꿔준 뒤에 VPC 쪽을 가면 생성된 내용을 확인 할 수 있다.

 

Update Code

Create IAM user

유저생성 resource 를 넣어 인스턴스를 생성할 때 유저 또한 같이 생성해주게 한다. 이 부분 역시 docs 에서 검색해서 내용을 먼저 가져와서 내 상황에 맞게 설정을 변경한다.

이때 기존에 IAM 에 생성되어 있는 기존 유저설정 값들을 참고하면 도움이 된다.

# Create IAM user
resource "aws_iam_user" "lion" {
  name = "lion-tf"
  path = "/"

}

resource "aws_iam_access_key" "lion" {
  user = aws_iam_user.lion.name
}

data "aws_iam_policy_document" "lion_ro" {
  statement {
    effect    = "Allow"
    actions   = ["ec2:Describe*"]
    resources = ["*"]
  }
}

resource "aws_iam_user_policy" "lion_ro" {
  name   = "tf-test"
  user   = aws_iam_user.lion.name
  policy = data.aws_iam_policy_document.lion_ro.json
}

execute code

terraform plan
terraform apply

Active console access

유저는 새롭게 생성되었으나 아직 콘솔에 접근할 순 없다.

 

이 또한 resource 로 작업을 해야한다.

pgp_key 를 이용하지 않고 password 를 이용해서 로그인을 해, console 에 대한 접근 권한을 만들어 보자

 

pgp_key 가 없을 땐 password 를 사용하라고 한다.

aws_iam_user_login_profile 에서 생성한 value 값을 output 으로 가져다 쓸 수 있게 하자

# active console access
resource "aws_iam_user_login_profile" "lion" {
  user    = aws_iam_user.lion.name
}

output "password" {
  value = aws_iam_user_login_profile.lion.password
  sensitive = true # console 에서는 가려주자
}
terraform plan
terraform apply

추가로 코드에서 sensitive 를 true 로 추가했는데, 이부분은 output 에서 나오는 정보값을 숨겨주는 역할을 한다.

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

password = <sensitive>

 

728x90
반응형

'Dev. > Terraform' 카테고리의 다른 글

Terraform: Modules  (0) 2023.09.05
Terraform: LoadBalancer  (0) 2023.09.05
Terrform: NCP 서버 생성  (0) 2023.09.02
Terraform: 설치와 기본정보  (0) 2023.09.01
Terraform: IaC  (0) 2023.09.01

댓글