Cloud

·Cloud/Terraform
CI/CD 툴인 Atlantis를 통해 Custom workflow를 통해 인프라를 구성합니다. Atlantis?Atlantis는 pull request를 통해 Terraform을 자동화하는 오픈소스입니다.Terraform 코드를 pull request 하고, comment에 atlantis plan, atlantis apply를 통해 테라폼 코드를 배포할 수 있습니다. Atlantis의 기본 동작은 아래와 같습니다.github 또는 gitlab, bitbucket을 통해 PR(pull request)를 보냅니다.git repo에 설정해노흔 webhook을 통해 atlantis에서 comment에 입력된 명령어를 전달받아 terraform을 수행합니다. Atlantis 구축해보기repo는 github을 ..
·Cloud/Terraform
어느덧 절반을 했다.terraform이 생소해서 아직 손에 익지 않았지만 천천히 익숙해질 때까지 해보겠다. Provider1. Terraform의 동작 원리 테라폼은 코드를 읽어 코드가 실행이 가능한지 분석하고, 가능하다면 API를 통해 대상에 속성이 반영되도록 호출합니다. core 컴포넌트는 사용자의 코드에 대해 순서를 작성하고, 플러그인에게 RPC 통해 코드 실행을 요청한다.플러그인은 go 바이너리를 통해 대상에게 api로 실행을 요청한다.terraform 코드에서도 required_providers를 선언하므로 어떤 프로바이더를 사용할지를 명시한다. terraform init명령어를 수행하면 플러그인 (프로바이더) 모듈을 다운로드 받는다.init이 완료되면, .terraform 디렉토리가 생성되는데..
·Cloud/Terraform
for_expression을 활용하여, AWS 인스턴스 배포 - vpc.tfprovider "aws" { region = "ap-northeast-2"}resource "aws_vpc" "ssungz-vpc" { cidr_block = "10.100.0.0/16" tags = { Name = "ssungz-vpc" }}resource "aws_subnet" "ssungz-subnet" { for_each = var.subnets vpc_id = aws_vpc.ssungz-vpc.id cidr_block = each.value.cidr_block availability_zone = each.value.az map_public_ip_on_launch = each.value.public ..
·Cloud/Terraform
- data를 통해 az 조회 및 조회 데이터로 리소스 생성 - available 상태의 zones 조회data "aws_availability_zones" "az_list" { state = "available"}output "aws_availability_zones" { value = data.aws_availability_zones.az_list} - ap-northeast-2a, ap-northeast-2c 두개 존에 ec2 배포 기본 서브넷 문제로 서브넷은 변수로 할당provider "aws" { region = "ap-northeast-2"}data "aws_availability_zones" "az_list" { state = "available"}data "aws_ami" "ec2-..
·Cloud/Terraform
- VPC, ec2, alb 구성 실습[vpc.tf]provider "aws" { region = "ap-northeast-2"}variable "name" { default = "ssungz"}variable "cidr" { type = list(string) default = ["10.100.0.0/16", "10.100.1.0/24", "10.100.2.0/24" ] }variable "az" { type = list(string) default = [ "ap-northeast-2a", "ap-northeast-2c" ]}resource "aws_vpc" "ssungz-vpc" { cidr_block = var.cidr[0] enable_dns_hostnames = true enab..
·Cloud/Terraform
- 조건에 일치하는 검증 조건 변수에 입력된 파일 리스트와 파일 이름이 일치하면, 코드 수행variable "file_name" { type = list(string) default = [ "abc-0.txt", "abc-1.txt", "abc-2.txt", "abc-3.txt", "abc-4.txt", "abc-5.txt", "abc-6.txt" ]}resource "local_file" "test_file" { for_each = toset(var.file_name) content = "abc" filename = "${path.module}/abc-${each.value}.txt" lifecycle { precondition { condition = contains(var...
·Cloud/Terraform
1. EC2 웹 서버 배포 - init.sh#!/bin/bashapt-get updateapt-get install -y apache2echo "hoon-test-web" > /var/www/html/index.htmlsystemctl start apache2systemctl enable apache2 - main.tfprovider "aws" { region = "ap-northeast-2"}data "template_file" "init-sh" { template = file("init.sh")}resource "aws_instance" "test-web-srv" { ami = "ami-0e73d7a01dba794a4" instance_type = "t2.micro" associate_pub..
·Cloud/Terraform
조건문Conditional Expressions 테라폼에서의 조건식은 3항 연산자 형태를 갖는다.조건은 true / false로 확인되는 모든 표현식 사용이 가능하다. Docs 조건식은 ? 기호를 기준으로 왼쪽은 조건이며, 오른쪽은 : 기호를 기준으로 왼쪽이 조건에 대해 true가 반환되는 경우이고,오른쪽이 false가 반환된다.# ? : var.a != "" ? var.a : "default-a" 조건식을 통해 단순 변수 재정의나 출력 값에 대한 조건 정의 뿐만 아니라 리소스 생성 여무에 응용할 수 있다.count에 조건식을 결합한 경우 아래와 같이 특정 조건에 따라 리소스 생성 여부를 선택할 수 있다.variable "enable_file" { default = true}resource "loc..
·Cloud/Terraform
for_each 반복문지난 글에 이어 terraform 반복문에 대해 정리하겠다. count로 반복했던 지난 글에서 중간 리소스를 삭제할 경우 에러가 발생했고,그에 대한 대응 방안으로 for_each가 있다고 작성했다. for_each : 반복문, 선언된 key 값 개수만큼 리소스를 생성한다.for_each는 반복할 때 타입 값에 대해 하나하나 each object로 접근한다는 의미이다.each object는 key, value 2개 속성을 가지고 있다.each.key : 선언된 for_each 항목의 key를 나타낸다.each.value : 선언된 for_each 항목의 value를 나타낸다.for_each는 모든 타입 object에 접근 할 수 있고, map, set 타입만 허용한다.map,set 타..
·Cloud/Terraform
반복문반복문을 통해 테라폼 구성 정의를 반복하지 않고 관리할 수 있다. (List 형태 값, key:value 형태) - count : 정수 값만큼 리소스나 모듈을 생성 resource "local_file" "name" { count = 5 content = "abc" filename = "${path.module}/abc.txt"}output "filecontent" { value = local_file.name.*.content}output "fileid" { value = local_file.name.*.id}output "filename" { value = local_file.name.*.filename}배포하면 정상적으로 배포된 것으로 보이지만 실제로는 파일이 한개 생겼다...
ssungz
'Cloud' 카테고리의 글 목록 (3 Page)