Terraform (6) - 기존 리소스 import와 drift 확인하기
1. 개요 지금까지는 Terraform 코드로 새 리소스를 만들었다. 실제 환경에는 콘솔이나 다른 도구로 이미 만든 리소스도 있다. 이를 Terraform에서 관리하려면 코드의 리소스 주소와 기존 객체를 연결 해야 한다. 그 과정이 import 다. 또 Terrafor…
1. 개요 지금까지는 Terraform 코드로 새 리소스를 만들었다. 실제 환경에는 콘솔이나 다른 도구로 이미 만든 리소스도 있다. 이를 Terraform에서 관리하려면 코드의 리소스 주소와 기존 객체를 연결 해야 한다. 그 과정이 import 다. 또 Terrafor…
1. 개요 2편에서는 for each 로 같은 종류의 파일을 여러 개 만들었다. 그런데 파일 생성과 출력값을 하나의 묶음으로 다른 프로젝트에서도 쓰려면 관련 코드를 함께 복사해야 한다. module 은 여러 Terraform 블록을 한 디렉터리에 모아 입력과 출력을 정…
1. 개요 이전 글에서는 S3 버킷을 만들었다. 그 작업 기록인 terraform.tfstate 는 실행한 컴퓨터에 저장됐다. 다른 사람이 같은 코드를 받아 실행해도 그 기록이 없으면 기존 버킷을 Terraform이 관리 중인지 알 수 없다. 여러 사람이 작업하려면 s…
1. 개요 이전 글까지는 내 컴퓨터의 파일을 만들었다. 이번에는 같은 init → plan → apply 흐름으로 AWS의 S3 버킷을 만든다. 리소스 는 Terraform이 만들고 관리하는 대상이고, AWS 계정 정보처럼 이미 존재하는 값을 읽을 때는 data sou…
1. 개요 애플리케이션은 회원 정보, 주문 내역, 게시글처럼 계속 늘어나는 데이터를 안전하게 저장하고 다시 찾아야 한다. 이때 자주 비교하는 선택지가 SQL 데이터베이스 와 NoSQL 데이터베이스 다. SQL은 보통 정해진 구조의 테이블을 관계로 연결해 다루는 관계형…
1. 개요 SQL 인젝션(SQL Injection) 은 사용자가 입력한 값이 SQL 문장의 일부로 해석되도록 만들어, 의도하지 않은 조회나 변경을 일으키는 공격이다. 로그인, 검색, 게시글 조회처럼 외부 입력을 데이터베이스 쿼리에 사용하는 기능에서 발생할 수 있다. 핵…
1. 개요 관계형 데이터베이스에서는 회원, 주문처럼 성격이 다른 데이터를 보통 별도의 테이블에 나누어 저장한다. 조인(JOIN) 은 공통된 값을 기준으로 여러 테이블의 행을 한 번의 조회 결과로 연결하는 SQL 기능이다. 이 글에서는 회원과 주문 테이블을 예로 들어 조…
1. 개요 관계형 데이터베이스의 테이블에는 비슷해 보이는 행이 여러 개 들어갈 수 있다. 이때 키(Key) 는 특정 행을 구별하거나, 다른 테이블의 행과 연결하는 데 쓰는 열 또는 열의 조합이다. 회원과 주문을 예로 키가 왜 필요한지 살펴보고, 후보키·기본키·대체키·외…
1. 개요 playbook이 커지면 한 파일에 task, 변수, handler, 설정 파일이 모두 섞인다. 웹 서버 설치 작업을 다른 프로젝트에서도 쓰고 싶다면 필요한 부분을 골라 복사해야 한다. role 은 "웹 서버 설치"처럼 한 가지 역할에 필요한 task, 변수…
1. 개요 관리하는 서버가 늘어나면 운영체제 종류나 버전이 서로 다를 수 있다. 같은 playbook을 쓰되 "Ubuntu면 이 작업, 아니면 건너뛰기"처럼 서버 상태에 따라 다르게 동작해야 한다. 또 한 작업이 실패했을 때 전체를 멈출지, 무시하고 계속할지도 정해야…