반응형

테라폼 5

Terraform이란

Terraform이란 : HCL 언어로 클라우드 리소스를 정의하고 이 내용을 테라폼 CLI 애플리케이션(terraform)으로 자신의 클라우드 계정에 실제로 반영할 수 있는 도구 HCL 언어란 - Hashicorp Configuration Language - 테라폼 코드를 작성하기 위한 언어 - Block: 테라폼 코드의 최소 단위 - Prefix: HCL 언어 블록을 나타냄 Provider "aws" { region = "ap-northeast-2" } --> 어떤 Provisioning을 할지를 나타냄 - Block 내용(Body)는 Argument로 구성됨- Argument는 Identifier(Argument이름), Expression(Argument 값)으로 나타냄 "" ""{ # block b..

Terraform - 중앙 집중식 비밀 저장소

중앙 집중식 비밀 저장소 : 테라폼 민강정보 위험을 최소화 - 중앙 집중식 비밀 저장소에 민감정보(ID/PW)를 저장 - 사용자는 필요할 때마다 민감정보를 조회 - --> 리소스에 접근 ID/PW 조회 data "aws_secretsmanager_secret_version" "creds" { secret_id = "t-study" } data block 참조 --> RDS 생성 resource "aws_db_instance" "myrds" { identifier_prefix = "t-sensitiveData" engine = "mysql" allocated_storage = 10 instance_class = "db.t2.micro" skip_final_snapshot = true db_name = "w..

Terraform - 민감정보 보안 / Provider Block / OIDC

Provider Block Provider Block에 인증정보를 하드코딩을 함. --> 테라폼 코드가 유출되면 admin 권한도 유출됨 provider "aws"{ region = "..." access_key = "access-key" secret_key = "secret-key" } 보완 방법 1. 환경변수 설정 $export AWS_ACCESS_KEY_ID="my-access-key" $export AWS_SECRET_ACCESS_KEY="my-secret-key" - 단점: 재부팅하거나 쉘을 바뀌면 환경변수를 재설정해야함. 2. 설정파일 $aws configure --> access key입력 Q. 태라폼이 다른 서비스(EC2 인스턴스 Github Action)에서 실행한다면? 위 방법으로 하면..

Terraform - for expression

Terraform - for expression : 반복을 이용해 일괄변환 작업 (expression 타입을 변환, 수정) - 대문자 변환 variable "fruits_set" { type = set(string) default = ["APPLE", "BANANA"] description = "fruit example" } ↓ variable "fruits_set" { type = set(string) default = ["apple", "banana"] description = "fruit example" } count for_each for expression 사용 목적 반복 조회 반복 조회 반복 변환 리턴 타입 [for item in 'expression': 변환작업] --> 리턴: tuple {..

Terraform - for_each 반복문

for_each : 반복을 할 때 인덱스가 아닌 each object로 접근하는 방법 - map, set만 for_each 사용 가능함 - for_each를 사용하려면 타입 변환이 필요함 list vs each object list variable "sample" { type = list(string) default = ["aaa", "bbb", "ccc"] } - IAM user 생성 resource "aws_iam_user" "count" { count = length(var.user_names) name = var.user_names[count.index] } - for_each를 이용해 IAM 생성할 경우 resource "aws_iam_user" "for_each_set" { for_each =..

반응형