요즘 한창 운영중인 서비스나 프로젝트에 대해서 자동화 작업을 많이 하고 있다.
그중에서도 Actions에 붙이는 작업을 많이 하고 있는데,
컨테이너가 거의 10개가 넘어가는 Docker-compose 로 구성되어있는 프로젝트를 어떻게 배포를 할까 고민을 하다가 결국 ssh 로 접속해서 커맨드를 일부 실행 하기로 했다.
AWS를 썼다면 좀더 쉬웠겠지만 이것은 다른 서버를 사용하고 있으므로 이 방법이 가장 나을 것 같았다.
어쨌든 나처럼 어떤이유에서든 Actions 실행시 SSH 접속 + 외부서버에서 커맨드 실행을 해야 하는 작업이 있을 수 있다.
이때 Actions 에서도 역시 해당 작업이 가능하다.
구글링을 해보니 이 프로젝트의 스타가 많이 박혀있어서 이걸로 결정했다.
위 레포에는 제작자가 써놓은 사용법이 나와있고 간단하게 요약하면 아래와 같이 사용이 가능하다.
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_IP }}
username: ${{ secrets.REMOTE_SSH_ID }}
key: ${{ secrets.REMOTE_SSH_KEY }}
port: ${{ secrets.REMOTE_SSH_PORT }}
script: |
whoami
git pull origin master
레포지토리 Settings -> Secrets 설정 페이지로 들어가서 호스트, 유저명, SSH Private Key, 포트번호를 세팅해준다.
참고로 이 방법을 사용하려면 먼저 SSH용 Public key, Private Key를 세팅해두고 SSH에 접속할 수 있도록 설정해둬야 한다. (private 키 세팅 방법은 레포의 Setting up SSH Key 참고) 귀찮다면 SSH Password 로도 세팅이 가능하니 레포를 참고하자.
이렇게 하면 정말 쉽게 ssh 사용이 가능하다!