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>
'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 |
댓글