본문 바로가기

IAC39

[Terraform/k8s] gp2 Storage Class patch eks를 만들면, gp2 storage class가 자동으로 같이 생성되어 있다. https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html Storage classes - Amazon EKS Storage classes Amazon EKS clusters that were created prior to Kubernetes version 1.11 weren't created with any storage classes. You must define storage classes for your cluster to use and you should define a default storage class for your persistent vo.. 2023. 6. 5.
[Terraform/AWS] VPC Peering Module을 만들 때 고려할 점 테라폼은 aws의 api를 사용해서 aws의 리소스를 제어한다.aws의 콘솔은 aws에서 api를 ui로 보기좋게(?) 제공하는 서비스이기 때문에, api를 직접 쓰는 것과는 다른 점들이 존재한다.(콘솔에선 못하지만 api로는 가능한 작업이 있는 점 등등..) 따라서 aws의 콘솔 작업과 aws api 작업 은 차이점이 분명히 존재하며,멱등성을 제공하는 IaC도구인 terraform의 경우 별도로 고려해야 할 점들이 불가피하게 생긴다. 그 중에서도 최근에 날 괴롭혔던게(?) VPC Peering이었는데,너무 쉬운 서비스라고 평소에 생각해왔기 때문에 의외로 애를 더 먹어버렸다. 바로 가보자! # 확장성(multi provider)을 고려한 Peering Module지금까지 TGW를 메인으로 써왔기 때문에,.. 2022. 10. 30.
[Terraform/k8s] k8s YAML 리소스로 Terraform Code를 쉽게 작성하는 3가지 방법 Terraform으로 kubernetes를 관리하는 경우, yaml 리소스를 한땀한땀 HCL Code로 변경하는건 매우 귀찮다 (너무 당연하게도) 노가다를 자동으로 돌려주는 오픈소스가 이미 있었다 1. k2tf (Open Source) 공식 k8s provider에서 제공하는 API를 사용하는 경우, k2tf를 사용해 간편하게 변환할 수 있다 https://github.com/sl1pm4t/k2tf GitHub - sl1pm4t/k2tf: Kubernetes YAML to Terraform HCL converter Kubernetes YAML to Terraform HCL converter. Contribute to sl1pm4t/k2tf development by creating an account o.. 2022. 8. 21.
[Terraform/EKS/k8s] import 시 Kubernetes: Unauthorized 상황 Terraform의 한 모듈 내에서 EKS Cluster와 k8s 리소스들을 같이 프로비저닝 중 k8s 리소스 블럭들을 추가하였고, 기존 cluster 내부 리소스들을 import 해야하는 상황 ## k8s provider 설정 data "aws_eks_cluster_auth" "cluster" { name = aws_eks_cluster.this.id } provider "kubernetes" { host = aws_eks_cluster.this.endpoint token = data.aws_eks_cluster_auth.cluster.token cluster_ca_certificate = base64decode(aws_eks_cluster.this.certificate_authority[0].d.. 2022. 6. 28.
[Terraform] MAC에서 tfenv로 terraform 특정 버전 사용 # tfenv 설치 $ brew install tfenv # terraform 특정 버전 설치 $ tfenv install 1.1.3 # terraform 특정 버전 사용 $ tfenv use 1.1.3 # terraform 버전 확인 $ terraform version Terraform v1.1.3 다른 버전으로 스위칭하는것도 자유롭다 끝 2022. 5. 14.
[Terraform] 다른 backend의 state가 업데이트가 안돼요..?! (terraform_remote_state 불러오는 방식) terraform backend 설정에 관한 글 : [Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud) terraform import에 관한 글 : [Terraform] Terraform import와 terraforming (AWS) 태초에....A 환경과 B 환경이 있었습니다 A와 B는 S3를 backend로 사용하고 있고...서로의 output을 받아오기 위해 data로 remote_state 블럭을 설정해 두었습니다 A 환경에서 실제 리소스들을 잔뜩 import를 해야 하는데, B 환경에서의 output을 사용할 일이 생겨서 아래와 같은 코드들을 추가했습니다 ## a/main.tf locals { test = data.terraform_remote_s.. 2022. 4. 30.
[Terraform] map 타입 변수 validation 설정하기 아래와 같은 변수를 사용한다고 생각해보자 variable "subnet_cidrs" { description = "Subnet CIDRs" type = map(string) default = { pub-bastion = "10.0.0.0/24" pri-db = "10.0.1.0/24" pri-glue = "10.0.2.0/24" pri-ecs = "10.0.3.0/24" } } 위 변수를 가지고 for_each를 돌리게 된다면, pub-bastion 과 pri-db 등의 이름들은 모두 each.key 로 분류되고, CIDR들은 모두 each.value로 분류된다 이 때, 각 key들의 이름이 pub 또는 pri로 시작하게 강제하고 싶으므로 validation 구문을 사용해보겠다 Terraform Vali.. 2022. 2. 21.
[Terraform] For Expression을 사용해 for_each문의 output 설정하기 https://www.terraform.io/language/expressions/for For Expressions - Configuration Language | Terraform by HashiCorp For expressions transform complex input values into complex output values. Learn how to filter inputs and how to group results. www.terraform.io 예를 들어, vpc를 여러 개 만든다고 해보자 count를 사용하는 경우 : locals { vpc_cidrs = [ "10.0.0.0/16", "10.1.0.0/16", "10.2.0.0/16" ] } resource "aws_vpc" "thi.. 2022. 2. 18.
[IaC] Terraform Associate 합격 후기 Terraform Associate를 땄다 Terraform 자격증이란게 있는지도 몰랐고, 찾아봐도 Associate밖에 없는거 보면 아직 생긴지 오래되진 않은 것 같다 그럼에도 불구하고 딴 이유는 - 내가 요 몇달간 테라폼을 많이 했어서 자신이 있었으며, - Practice Exam 등의 예시 문제를 봤을 때 문제 자체가 쉽게 나오고 있었고, - 연휴동안 할 게 없었기 때문이다. 사실 근데 문제가 있었다..... 원래 연휴동안 후딱 따려고 2월 2일(연휴 마지막 날) 시험을 잡아놨었으나, 여권이 없어서(영어 이름을 증명할 카드가 없어서) ㅋㅋㅋ 시험을 보지 못했다 어찌보면 당연한것 아닌가 싶지만, 그동안 AWS 자격증들은 피어슨 뷰? 아무튼 그거로 봤었고, 이전에 수세 시험을 칠 때 한국 민증만으로도 .. 2022. 2. 4.
[Terraform] Terraform import와 terraforming (AWS) 1. Terraform import란? https://www.terraform.io/docs/cli/import/index.html Import - Terraform by HashiCorp Terraform can import and manage existing infrastructure. This can help you transition your infrastructure to Terraform. www.terraform.io Terraform import는 말 그대로 기존에 존재하던 인프라를 가져오는 기능이다 는 너무 내 희망회로였고, 공식 도큐를 잘 읽어보면 알겠지만 리소스를 그저 "상태"로 땡겨오는 기능이었다 심지어는 가져올 개체가 매핑될 리소스에 대한 빈 블록을 수동으로 미리 작성해놔야 했다 .. 2021. 11. 7.
[Terrafrom] IP Network Functions (cidrhost, cidrnetmask, cidrsubnet, cudrsubnets) 1. cidrhost https://www.terraform.io/docs/language/functions/cidrhost.html cidrhost - Functions - Configuration Language - Terraform by HashiCorp The cidrhost function calculates a full host IP address within a given IP network address prefix. www.terraform.io 주어진 IP 대역에서의 특정번째 호스트 IP 찾기 기본 구조 : cidrhost(prefix, hostnum) Ex) cidrhost("10.0.0.0/16", 39) > 10.0.0.39 cidrhost("192.168.32.96/27", 12.. 2021. 10. 18.
[Terraform on AWS] CSV 파일 참조해서 Security Group Rule 만들기 CSV 파일 형식 module/main.tf variable "sg_id" {} variable "rule_type" {} # ingress / egress variable "from_port" {} variable "to_port" {} variable "protocol" {} # tcp / udp / icmp variable "src_or_dst_type" {} # cidr(list) / pl(list) / sg variable "destination" {} variable "description" {} # Rule with CIDR Blocks resource "aws_security_group_rule" "sg_cidr_rule" { count = var.src_or_dst_type == "cid.. 2021. 10. 10.
[Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud) Terraform Backend에 대해 썼던 기존 글 [Terraform] 테라폼 backend의 이해 [Terraform on AWS] 테라폼 backend, 상태 잠금 설정해보기 위 글들은 잘 모르는 상태에서 책 내용을 정리만 해 놓은 것이었다 테라폼을 실무에서 쓰게 되면서 깨닫고 느낀 것들을 다시 정리해 보겠다 Terraform 실행 환경 분리 & Backend 설정의 필요성 참고한 글 : https://rampart81.github.io/post/terraform-directory-structure/ Terraform은 기본적으로 apply가 일어나는 폴더 내의 .tf 파일들을 모두 실행시킨다 VPC/EC2와 같은 기본적인 인프라만 프로비저닝할거라면 상관없지만, Database/Directory/.. 2021. 10. 10.
[Terraform on AWS] Routing Module Example 21.11.5 수정 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route registry.terraform.io Terraform AWS Routing은 대상의 종류에 따라 들어가야 할 옵션이 다르다 옵션 자체가 다르다 보니 삼항 구문을 이용한 조건문을 생성해 case처럼 사용할 수 있게 만들어야 했다 modules/main.tf variable "routings" {} variable "rt_id" {} variable "gateway" { default = ["ig.. 2021. 10. 3.
[Terraform CI/CD] Terraform Cloud 사용법 (GitHub -> AWS) 준비물 : GitHub 계정, AWS User ACCESS/SECRET KEY Terraform Cloud 계정 만들기 (5인 이하는 무료) : https://app.terraform.io/signup/account 이름, 메일, 비번을 가지고 간단하게 회원가입을 하면, Confirm Email Address라는 창이 뜬다 가입할 때 입력한 메일의 메일함을 확인해보면 Terraform Cloud로부터 메일이 하나 와있다 주어진 링크를 클릭하면 아래와 같은 창이 뜬다 나는 example 없는 Start from scratch를 눌러주었다 -> Organization을 만들라고 뜬다 Organization은 말 그대로 조직이고, 그 안에 프로젝트들을 여러 개 만들 수 있다 물론 Organization도 여러.. 2021. 9. 19.