Ansible (5) - 변수 정의 위치와 Vault로 비밀 값 다루기
1. 개요 Ansible (2)에서는 play의 vars: 에 변수를 정의했다. 하지만 서버마다 다른 값, 그룹 전체에 같은 값, 실행할 때만 바꾸는 값을 모두 playbook 안에 적으면 playbook을 다른 곳에서 다시 쓰기 어렵다. Ansible은 변수를 inv…
1. 개요 Ansible (2)에서는 play의 vars: 에 변수를 정의했다. 하지만 서버마다 다른 값, 그룹 전체에 같은 값, 실행할 때만 바꾸는 값을 모두 playbook 안에 적으면 playbook을 다른 곳에서 다시 쓰기 어렵다. Ansible은 변수를 inv…
1. 개요 이전 글에서는 ad hoc 명령으로 Nginx를 설치하고 지웠다. 하지만 실제 웹 서버를 준비하려면 설치 뒤에 설정 파일을 넣고, 첫 화면 파일을 바꾸고, 서비스를 재시작하는 단계가 더 필요하다. 이 단계를 매번 명령으로 입력하면 순서를 빠뜨리기 쉽다. pl…
1. 개요 이전 글까지는 내 컴퓨터( localhost )만 대상으로 실습했다. Ansible을 실제로 쓰는 곳은 원격 서버이므로, 이번에는 SSH로 서버에 연결하는 과정부터 준비한다. 이 글에서는 관리 노드에 Ansible용 계정을 만들고, SSH 키로 비밀번호 없이…
1. 개요 1편에서는 Actuator의 health 로 "서버가 살아 있는가"를 확인했다. 하지만 운영에서는 "좌석 조회 API가 요즘 느려지지 않았나?", "오늘 예매가 몇 건 성공했나?"처럼 숫자로 답해야 하는 질문 도 많다. 이런 숫자를 메트릭 (metric)이라…
1. 개요 공연 예매 서비스를 운영하다 보면 "서버가 지금 살아 있나?", "DB 연결은 괜찮나?", "좌석 조회 API가 요즘 느려지지 않았나?" 같은 질문에 답해야 한다. 로그만으로는 이런 질문에 빠르게 답하기 어렵다. Spring Boot는 이 문제를 두 도구로…
1. 개요 공연 예매 서비스에서 여러 사용자가 같은 좌석을 동시에 예매하면, 서버 로그에는 여러 요청의 로그가 한데 섞여 찍힌다. 이때 "이 로그 한 줄이 어느 요청에서 나왔는가"를 알 수 없으면 동시성 문제를 추적하기 어렵다. 이 글에서는 요청마다 짧은 식별자(요청…
1. 개요 JAVA (14)에서 값이 같은 객체를 같다고 판단하려면 equals() 와 hashCode() 를 함께 재정의해야 한다고 정리했다. 그런데 필드 몇 개를 담아 옮기기만 하는 클래스에도 생성자, getter, equals() , hashCode() , toS…
1. 개요 테스트는 "코드를 실행한 결과가 기대와 같은가"를 확인하는 작업이다. 이 확인 단계를 검증(assertion) 이라고 부르고, 검증이 틀리면 테스트가 실패한다. Java 테스트에서는 JUnit의 assertEquals 대신 AssertJ 의 assertTha…
1. 개요 이전 글에서는 디렉터리와 파일을 만드는 playbook으로 Ansible의 기본 흐름과 멱등성을 확인했다. 그런데 실제 playbook은 값이 서버마다 다르고, 같은 작업을 여러 번 반복하고, 상황에 따라 작업을 건너뛰어야 한다. 이 글에서는 그때 쓰는 다섯…
1. 개요 서버 10대에 같은 패키지를 설치하고 같은 설정 파일을 넣어야 한다고 해 보자. 한 대씩 SSH로 접속해 명령을 입력하면 시간이 오래 걸리고, 중간에 한 대를 빠뜨리거나 명령을 잘못 입력하기 쉽다. Ansible 은 이런 작업을 playbook 이라는 파일에…