전체 글
-
Terraform LocalIaC/Terraform 기초 2023. 9. 20. 01:21
이번엔 terraform local에 대해서 알아보겠습니다. 테라폼에서는 locals라는 블록 안에 local value들을 만들어서 활용할 수 있습니다. 그리고 local 안에서 프로그래밍 언어처럼 반복문이나 조건문을 통해 로직을 구현하는 것도 가능합니다. 한번 간단한 코드와 함께 살펴보겠습니다. locals { s3_bucket_name = "cloudman-sample-bucket-01" } resource "aws_s3_bucket" "cloudman_s3_sample_bucket" { bucket = local.s3_bucket_name bucket_prefix = "logs/" tags = { log = "yes" expired = "yes" } } 예전에는 s3 bucket 이름을 var.c..
-
Backend Credential ErrorIaC/Terraform Error Case 2023. 9. 20. 01:11
다음과 같은 에러가 발생하면 Error: error configuring S3 Backend: error validating provider credentials: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid. 현재 설정된 backend가 위치한 클라우드의 storage에 대한 권한이 없는 상태이므로 발생하는 에러입니다. S3 backend의 경우, export AWS_PROFILE="YOUR PROFILE"이나 aws configure 명령어를 통한 AWS profile의 설정을 하면 해결됩니다. Google Cloud Storage(GCS)의 경..
-
Terraform VariableIaC/Terraform 기초 2023. 9. 19. 23:17
이번엔 테라폼 Variable에 대해서 알아보겠습니다. variable은 테라폼에서 사용되는 변수입니다. 다른 일반적인 개발 언어로 개발을 하셨던 분들은 변수가 무엇인지 다 아실 것이라고 생각합니다. 혹시 모르시는 분들을 위해 간단하게 설명하면 변수는 값을 담는 그릇이라고 생각하시면 좋습니다. 그럼 테라폼에서 변수는 어떤 역할을 하는거죠? 변수는 값을 입력받아서 그 값을 담아서 전달할 수 있죠. 테라폼에서 변수도 마찬가지입니다. 어떤 변수로 설정하면 하드코딩을 하지 않고 외부의 값을 입력받아서 해당 값에 따라 리소스의 생성 조건을 다양하게 변화시킬 수 있습니다. 그럼 테라폼에 어떤 변수 타입이 있는지 코드로 간단하게 살펴봅시다. variable "cloudman_string" { type = string..
-
Terraform - AWS IAMIaC/Terraform AWS 2023. 9. 17. 05:36
(이 글은 AWS IAM에 대한 이해를 전제로 작성되었습니다. 관련 내용은 https://kh-archive.tistory.com/38를 참고하세요) 테라폼으로 AWS IAM 리소스들을 생성하는 방법에 대해서 알아봅시다. 우선, 바로 테라폼 코드를 보고 어떤 식으로 구성되는지 말씀드리겠습니다. resource "aws_iam_policy" "cloud_man_lambda_tagging_policy" { name = "lambda-tagging-sample-policy" description = "Policy for Lambda functions to tag themselves" policy = jsonencode({ Version = "2012-10-17", Statement = [ { Action = ..
-
Terraform - AWS S3IaC/Terraform AWS 2023. 9. 16. 22:25
(이 글은 AWS S3에 대한 이해를 전제로 작성되었습니다. 관련 내용은 https://kh-archive.tistory.com/26 를 참고하세요) Terraform으로 AWS의 S3를 생성하는 코드에 대해서 살펴보겠습니다. resource "aws_s3_bucket" "cloudman_s3_sample_bucket" { bucket = "cloudman-s3-bucket-01" bucket_prefix = "logs/" tags = { log = "yes" expired = "yes" } } 코드가 이게 다인가요? 네! 놀랍게도 이게 다입니다. 만들어지는 S3의 내용을 살펴보면 S3 bucket의 이름은 "cloudman-s3-bucket-01"이고, bucket의 prefix를 "logs"로 만들고..
-
AWS VPC 기초 II (AWS VPC와 서브넷 생성)Cloud 기초/AWS 기초 2023. 9. 16. 16:02
(이 글은 https://kh-archive.tistory.com/41를 미리 읽었거나 네트워크에 대한 기초 지식을 전제로 설명합니다.) 이제 실제 AWS VPC와 서브넷을 만들어보겠습니다. AWS에 로그인을 하고 검색창에 VPC라고 검색하여 들어가면 다음과 같이 VPC 메인 화면을 확인할 수 있습니다. VPC는 Region에 따라 독립된 VPC로 분류되기 때문에 우선 VPC를 생성할 리전을 선택해줍니다. 리전 선택은 오른쪽 상단에 내 계정 이름 옆에서 선택할 수 있습니다. 그리고 노란색 버튼의 VPC 생성을 눌러서 VPC 생성화면으로 넘어가봅시다. 그러면 이런 화면이 나오는데요. 여기서 생성할 리소스 선택을 VPC 등이 아니라 VPC만을 선택해줍니다. (VPC 등으로 선택하면 서브넷 등을 쉽게 생성할 ..
-
AWS VPC 기초 I (네트워크의 기본지식 알기)Cloud 기초/AWS 기초 2023. 9. 16. 10:44
이번엔 AWS VPC에 대해서 알아봅시다. AWS VPC는 Virtual Private Cloud의 약자로 AWS에서 제공하는 가상 네트워크 서비스입니다. 가상 컴퓨터가 있으니까 가상 컴퓨터의 네트워크도 설정이 필요하겠죠? 그래서 등장한 것이 가상 네트워크입니다. 우선, 가상 네트워크 설정에 앞서 기본적인 네트워크 지식을 알고 넘어갈까요? 가상 네트워크를 생성하고 서브넷을 설정하면 항상 제가 힘들었던 부분이 IP를 설정하는 부분이었습니다. 보통은 저는 어떤 웹사이트를 만들고 도메인을 등록하면 자동으로 IP라는 주소가 할당되어서 사실 별로 IP에 대해서 깊이 있게 생각하지 않았습니다. (그거 그냥 자동으로 만들어지는거 아니야?) 네트워크이 주소가 무엇인지 전혀 지식이 없는 분들도 있을 수 있으니까 간단하게..
-
Terraform State LockIaC/Terraform 기초 2023. 9. 15. 20:34
이전에 Terraform에서 state파일을 통해 인프라의 현재 상태를 파악하고 관리한다고 말씀드렸습니다. (Terraform State에 관한 내용을 아직 모르시는 분들은 링크를 참고해주세요.) 그러면 한 가지 고민이 생깁니다. 만약에 동시에 state 파일을 수정하려고 하면 꼬이는거 아닐까? 여러 명이 하나의 state 을 바라보고 있다면 어떻게 관리해야하지? 이런 고민을 해결해주는 것이 state lock입니다. 만약 하나의 state을 바라보고 손오공과 저팔계라는 테라폼 개발자가 각자 다른 인프라를 개발하고 있다고 가정해봅시다. (하지만 Github에서 같은 코드를 공유하고 terraform apply는 main(master) 브랜치의 최신 commit을 기준으로 합니다) 그리고 동시에 손오공은 ..