반응형

homebrew를 통해서 jenkins를 설치했고, 빌드 머신이 될 놈이기 때문에, 리부팅이 되어도 문제 없도록 만들어야하는 니즈가 있다.

 

homebrew를 이용하면 아래와 같은 명령어로 손쉽게 시작 / 중지 / 재시작이 가능하고,

내부적으로 launchd를 활용해서 부팅 후 로그인 시 서비스 재시작도 어느정도 관리를 해준다.

# 서비스 시작
$ brew services start jenkins-lts

# 서비스 중지
$ brew services stop jenkins-lts

# 서비스 재시작
$ brew services restart jenkins-lts

 

근데 내가 필요한건, 머신이 재부팅 된 후에, 유저 로그인을 하지 않아도 리눅스처럼 서비스가 동작하는 것이 목표였다.

 

여러 자료를 찾아보니, MAC에는 LaunchAgents와 LaunchDaemons라는 놈들이 있는데..

Homebrew에서 제공하는 brew services 키워드의 경우 일반 유저로 서비스 실행 시 LaunchAgents라는 놈을 이용하고,

root 권한을 획득한 후에 실행하면 LaunchDaemons라는 놈을 이용하는 것으로 보였다.

 

이 두 개의 차이는 뭐일까?

 

LaunchAgents라는 놈의 경우 서비스를 재시작 해주긴하지만, 유저가 로그인했을 경우(ssh를 통한 로그인은 해당이 안됨)에 약속된 서비스를 재시작 해준다.

 

LaunchDaemons라는 놈은 우리가 흔히 알고 있는 리눅스에서의 서비스 처럼, 머신이 재부팅되어도 재시작을 해준다.

 

결론은 아래와 같은 명령어를 이용하면, 내가 원한 방향이 만들어지게 된다.

# 서비스 시작
$ sudo brew services start jenkins-lts

# 서비스 중지
$ sudo brew services stop jenkins-lts

# 서비스 재시작
$ sudo brew services restart jenkins-lts

 

하지만... 귀찮은 일이 하나 남았다.

 

서비스 실행하는 계정 자체가 변경이 되었기 때문에, jenkins처럼 유저별로 데이터를 저장하는 특성이 있는 경우,

이를 옮겨주어야 한다. (아.. 이런거 때문에 역시 docker를 써야해;;)

 

MAC 장비 스펙이 낮아서 standalone으로 설치를 해보았는데, 사실 docker를 쓰면 고민할 필요가 없는 문제이긴하다.

 

그 와중에 다행인건, 기존에 쓰던 유저 하위의 .jenkins 폴더 내용을 통째로, root로 복사했더니 잘 동작한다!

반응형
,