본문 바로가기

DevOps/Terraform

(9)
[Terraform] CDKTF Docker Provisioning Demo 테라폼 공식 홈페이지에 제공되는 CDKTF 기반 Docker Provisioning Docker Install curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nul..
[Terraform] CDKTF 개요 및 환경 구성 OverView 기존 Terraform은 HCL 언어를 사용하여 인프라를 정의하였지만 CDKTF를 사용하면 다른 프로그래밍 언어로도 인프라 정의 및 프로비저닝이 가능하다. 지원되는 언어는 TypeScript, Python, Java, C#, Go 지원된다. 설치 주소 - https://developer.hashicorp.com/terraform/tutorials/cdktf/cdktf-install Install CDK for Terraform and Run a Quick Start Demo | Terraform | HashiCorp Developer Set up your CDK for Terraform (CDKTF) environment and run a local Docker demo. develop..
[TF]Terraform 반복문 Terraform에서도 반복문은 for문을 사용한다. IAM Group과 IAM User를 생성하여 IAM User를 IAM Group에 할당시켜보자 main.tf provider "aws" { region = "ap-northeast-2" } resource "aws_iam_group" "developer" { name = "developer" } resource "aws_iam_group" "employee" { name = "employee" } output "groups" { value = [ aws_iam_group.developer, aws_iam_group.employee, ] } variable "users" { type = list(any) } resource "aws_iam_user" ..
[TF]Terraform 조건문 Terraform에서는 조건식을 지원한다. 조건식 Condition ? If_True : If_False를 사용하여 나타낼 수 있다. 예제 provider "aws" { region = "ap-northeast-2" } variable "is_jhon" { type = bool default = true } locals { message = var.is_jhon ? "Hello John!":"Hello!" } output "message" { value = local.message } 위의 코드에서 값이 True면 Hello John!을 출력하게 되고 Flase면 Hello!를 출력하게된다. 조건식을 활용한 IGW provider "aws" { region = "ap-northeast-2" } varia..
[TF]Terraform Count, Foreach IAM User 생성 provider "aws" { region = "ap-northeast-2" } resource "aws_iam_user" "user_1" { name = "user-1" } resource "aws_iam_user" "user_2" { name = "user-2" } resource "aws_iam_user" "user_3" { name = "user-3" } output "user_arns" { value = [ aws_iam_user.user_1.arn, aws_iam_user.user_2.arn, aws_iam_user.user_3.arn, ] } Output 결과 소 수의 사용자의 경우 위와 같은 코드를 사용할 수 있지만 다 수의 사용자를 관리하기 쉽게 반복문을 사용하여 반..
[TF]Terraform Variable & Local & Output Terraform 정의 variable "vpc_name" {} module "vpc" { source = "terraform-aws-modules/vpc/aws" version = "0.24.0" name = "var.vpc_name" cidr_block = "10.0.0.0/16" } Variable를 통한 정의 variable 통해 vpc_name의 값을 입력 받는다. terraform apply를 하고 생성된 리소스를 AWS Console에서 보면 입력받은 값이 name이 된다. 환경변수를 통한 정의 운영체제 상에 환경 변수를 추가 export TF_WAR_vpc_name="test_vpc" 위와 같이 vpc name이 test_vpc가 된다. 파일을 통한 정의 terraform.tfvars 사용..
[TF] AWS Resource 생성 Terraform 코드를 통해 EC2를 생성할려고한다. 먼저 나는 awscli 설치를 하여 aws configure를 통해 access_key, secret_key를 선언하였다. Terraform 코드를 사용하여 간단하게 EC2 Instance를 생성할 것이다. provider "aws" { region = "ap-northeast-2" } resource "aws_instance" "ubuntu" { # ami Ubuntu_20.04 TLS ami = "ami-0454bb2fefc7de534" instance_type = "t2.micro" tags = { Name = "TerraformUbuntu" } } 위의 코드를 init 후에 apply를 하면 plan이 나오고 생성할 것인지 묻는다. yes를 ..
[TF]HCL 기초문법 HashiCorp Configuration Language(HCL) Terraform 파일은 HashiCorp에서 만든 언어인 HCL을 사용하고 있다. 파일과 디렉토리로 구성되었고 UTF-8을 사용한다. Terraform 형식 .tf와 JSON 형식인 .json을 모두 사용 가능하다 보통 작성할 때는 Terraform 형식으로 많이 사용하는데 사람이 읽기 좋은 구조로 되어 있고 주석도 사용이 가능하기 때문이다. 주석 라인 주석 #, // 사용하고 여러 라인 주석은 /*, */를 사용한다. Style Conventions Terraform에서 권장하는 작성 규약이 있다. ami = "ami-example" instance_type = "t2.micro" 1. = 열을 맞춰서 작성 2. 들여쓰기를 Tap이 ..