검색엔진 솔루션을 납품할 때마다 서버에 도커를 손으로 설치하던 작업을 셸 스크립트로 자동화한 기록이다. 일반망과 폐쇄망 두 경우를 나누고, OS 판별부터 폐쇄망에서 데몬을 직접 띄우는 방법까지 실제 스크립트로 보여준다. 반복 작업과 그것을 문서로 남기는 부담을 함께 없애는 것이 목적이다.
핵심 포인트- 폐쇄망 서버는 네트워크를 못 써 공식 문서의 설치 절차를 그대로 따를 수 없다.
- 폐쇄망에서는 실행에 필요한 파일들을 미리 받아 패키지에 넣어 옮기는 방식을 쓴다.
- 일반망이라도 명령을 한 줄씩 복사해 붙이는 방식은 납품 건수가 늘수록 시간 낭비가 된다.
- 대상 서버 OS가 두 종류라 설치 명령이 달라 스크립트에서 OS를 먼저 판별해야 한다.
- 두 OS 모두에서 쓸 수 있는 판별 방법으로 커널 버전 정보를 읽어 문자열 포함 여부로 분기했다.
- 폐쇄망에서는 서비스 관리 명령 대신 데몬을 직접 실행해야 한다.
상세 정리- 배경: 이 검색엔진은 도커로 서버에 올려 쓰므로 납품 대상 서버에 도커 설치가 선행돼야 한다.
- 기존 방식: 공식 문서를 찾아 몇 줄의 명령을 복사해 붙이면 끝나는 단순한 작업이었다.
- 문제 1: 폐쇄망이라 네트워크를 쓸 수 없다는 조건이 생겼다.
- 문제 2: 일반망이어도 반복되는 복붙 작업이 쌓이고, 그 방법을 문서로 정리해 두었다가 나중에 다시 찾아 따라 하는 시간도 낭비다.
- 해결 방향: 설치 명령을 모은 셸 스크립트를 만들어 실행 한 번으로 끝내기로 했다.
- OS 판별: 두 OS 모두에서 쓸 수 있어야 하므로 커널 버전 파일을 읽어 그 문자열에 특정 이름이 포함되는지로 구분했다. 정확한 이름이 그대로 나오지 않기 때문이다.
- 데비안 계열 분기: 패키지 목록을 갱신하고 필요한 의존 패키지를 설치한 뒤 저장소 키를 등록하고 저장소를 추가해 도커를 설치한다.
- 레드햇 계열 분기: 저장소 관리 도구를 설치하고 저장소를 추가한 뒤 도커를 설치하고 서비스를 시작한다.
- 공통 후처리: 두 분기 모두 현재 사용자를 도커 그룹에 추가하고 서비스를 재시작한 뒤 완료 메시지를 남긴다.
- 컴포즈 설치: 파일이 경로에 존재하기만 하면 되므로 릴리스 파일을 내려받아 실행 권한을 주고 심볼릭 링크를 걸고 버전을 확인한다.
- 폐쇄망 전제: 아무것도 없는 상태에서 만들어낼 수는 없으므로 실행 파일들을 솔루션 패키지 안에 미리 넣어 둔다.
- 폐쇄망의 단순화: 설치 명령만 OS마다 다를 뿐 실제로 놓이는 파일은 같으므로 폐쇄망에서는 OS 판별이 필요 없다.
- 경로 처리: 패키지의 상위 디렉터리에서 설치해야 해 현재 경로를 변수에 잡아두고 이동한다.
- 폐쇄망 설치: 압축 파일을 상위로 복사해 풀고 바이너리를 실행 경로에 복사한 뒤 데몬을 직접 백그라운드로 띄운다.
- 실행 방식의 차이: 폐쇄망에서는 기존에 쓰던 서비스 관리 명령 대신 데몬 실행 명령을 써야 한다는 점을 짚는다.
- 컴포즈 폐쇄망 버전: 일반망 스크립트에서 내려받는 명령만 복사 명령으로 바꾸면 나머지는 동일하다.
- 다음 계획: 색인에 필요한 쿼리를 전달받으면 따로 다듬어야 하는 경우가 있어 그것을 막을 가이드라인을 만들 예정이라고 밝힌다.
왜 읽나인터넷이 막힌 고객사 서버에 컨테이너 환경을 세워야 한다면, 사전 반입 방식과 서비스 관리자 없이 데몬을 띄우는 지점을 미리 확인할 수 있다.