Terraform

Terraform (6) - 기존 리소스 import와 drift 확인하기

1. 개요 지금까지는 Terraform 코드로 새 리소스를 만들었다. 실제 환경에는 콘솔이나 다른 도구로 이미 만든 리소스도 있다. 이를 Terraform에서 관리하려면 코드의 리소스 주소와 기존 객체를 연결 해야 한다. 그 과정이 import 다. 또 Terrafor…

·5분
Terraform

Terraform (5) - module로 인프라 구성 재사용하기

1. 개요 2편에서는 for each 로 같은 종류의 파일을 여러 개 만들었다. 그런데 파일 생성과 출력값을 하나의 묶음으로 다른 프로젝트에서도 쓰려면 관련 코드를 함께 복사해야 한다. module 은 여러 Terraform 블록을 한 디렉터리에 모아 입력과 출력을 정…

·5분
Terraform

Terraform (4) - 원격 state와 잠금으로 함께 작업하기

1. 개요 이전 글에서는 S3 버킷을 만들었다. 그 작업 기록인 terraform.tfstate 는 실행한 컴퓨터에 저장됐다. 다른 사람이 같은 코드를 받아 실행해도 그 기록이 없으면 기존 버킷을 Terraform이 관리 중인지 알 수 없다. 여러 사람이 작업하려면 s…

·6분
Terraform

Terraform (3) - AWS S3 버킷으로 실제 인프라 관리하기

1. 개요 이전 글까지는 내 컴퓨터의 파일을 만들었다. 이번에는 같은 init → plan → apply 흐름으로 AWS의 S3 버킷을 만든다. 리소스 는 Terraform이 만들고 관리하는 대상이고, AWS 계정 정보처럼 이미 존재하는 값을 읽을 때는 data sou…

·5분
Ansible

Ansible (7) - Role로 playbook 재사용하고 Galaxy, Collection 쓰기

1. 개요 playbook이 커지면 한 파일에 task, 변수, handler, 설정 파일이 모두 섞인다. 웹 서버 설치 작업을 다른 프로젝트에서도 쓰고 싶다면 필요한 부분을 골라 복사해야 한다. role 은 "웹 서버 설치"처럼 한 가지 역할에 필요한 task, 변수…

·9분
Ansible

Ansible (6) - Facts와 조건문, 작업 실패 처리

1. 개요 관리하는 서버가 늘어나면 운영체제 종류나 버전이 서로 다를 수 있다. 같은 playbook을 쓰되 "Ubuntu면 이 작업, 아니면 건너뛰기"처럼 서버 상태에 따라 다르게 동작해야 한다. 또 한 작업이 실패했을 때 전체를 멈출지, 무시하고 계속할지도 정해야…

·9분
Ansible

Ansible (5) - 변수 정의 위치와 Vault로 비밀 값 다루기

1. 개요 Ansible (2)에서는 play의 vars: 에 변수를 정의했다. 하지만 서버마다 다른 값, 그룹 전체에 같은 값, 실행할 때만 바꾸는 값을 모두 playbook 안에 적으면 playbook을 다른 곳에서 다시 쓰기 어렵다. Ansible은 변수를 inv…

·8분
Ansible

Ansible (4) - playbook으로 Nginx 설치, 설정, 제거하기

1. 개요 이전 글에서는 ad hoc 명령으로 Nginx를 설치하고 지웠다. 하지만 실제 웹 서버를 준비하려면 설치 뒤에 설정 파일을 넣고, 첫 화면 파일을 바꾸고, 서비스를 재시작하는 단계가 더 필요하다. 이 단계를 매번 명령으로 입력하면 순서를 빠뜨리기 쉽다. pl…

·7분
Ansible

Ansible (2) - 변수, 반복, 템플릿, 조건, handler로 playbook 다듬기

1. 개요 이전 글에서는 디렉터리와 파일을 만드는 playbook으로 Ansible의 기본 흐름과 멱등성을 확인했다. 그런데 실제 playbook은 값이 서버마다 다르고, 같은 작업을 여러 번 반복하고, 상황에 따라 작업을 건너뛰어야 한다. 이 글에서는 그때 쓰는 다섯…

·9분
Ansible

Ansible (1) - Ansible이 하는 일과 첫 playbook 실행하기

1. 개요 서버 10대에 같은 패키지를 설치하고 같은 설정 파일을 넣어야 한다고 해 보자. 한 대씩 SSH로 접속해 명령을 입력하면 시간이 오래 걸리고, 중간에 한 대를 빠뜨리거나 명령을 잘못 입력하기 쉽다. Ansible 은 이런 작업을 playbook 이라는 파일에…

·10분
Terraform

Terraform (1) - Terraform이 하는 일과 첫 리소스 만들기

1. 개요 서버, 네트워크, 디스크 같은 인프라를 만들 때 웹 콘솔에서 버튼을 눌러 만들 수도 있다. 하지만 그렇게 만들면 "무엇을 어떻게 만들었는지"가 기록에 남지 않아서, 같은 환경을 다시 만들거나 다른 사람에게 설명하기 어렵다. Terraform 은 만들고 싶은…

·10분
Terraform

Terraform (1) - 처음 보는 사람을 위한 HCL 문법 정리

1. 개요 Terraform은 "어떤 인프라가 있어야 하는가"를 코드로 적어 두면, 그 상태가 되도록 API를 호출해 리소스를 만들어 주는 도구다. 이 글은 Terraform 코드를 읽는 데 필요한 문법을 정리한다. 2. 블록 구조 읽기 Terraform 코드는 HCL…

·16분
Docker

Docker (12) - 멀티 스테이지 빌드와 Dockerfile 작성 원칙

앞선 글에서는 Dockerfile의 주요 명령어와 이미지 빌드 방법을 정리했다. 이번 글에서는 빌드 환경과 실행 환경을 분리하는 멀티 스테이지 빌드(Multi stage build) 를 살펴본다. 멀티 스테이지 빌드를 사용하면 컴파일러, 패키지 관리자, 개발용 의존성처…

·8분
Docker

Docker (11) - Dockerfile 명령어 심화와 빌드 실습

1. 개요 Docker (4)에서 FROM, WORKDIR, COPY, RUN, ENV, EXPOSE, CMD로 이어지는 Dockerfile의 기본 골격과 멀티 스테이지 빌드를 다뤘다. 이번 글에서는 그때 다루지 않았던 나머지 명령어들(ENTRYPOINT, ADD, V…

·13분