서론
이전에 Ansible playbook을 실행하면 각 서버에 배포 할 수 있게끔 처리를 해 두었다.
이제, git에 push가 실행되었을 때 해당 playbook을 실행할 수 있게 처리해 두면 진짜 자동배포가 완료된다!
변수값 세팅
git Action에서 EC2 서버에 접근 할 수 있어야 하기 때문에,
repo->Setting->Secrets and variables에 SSH_KEY값, HOST값, USER 값을 추가해 준다.
deploy Action 작성
repo->gitActions->New workflow를 눌러 준 뒤, set up a workflow yourself를 눌러준다.
name: deploy
on:
workflow_dispatch:
push:
branches:
- [master-branch-name]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Run Ansible playbook
uses: appleboy/ssh-action@master
with:
key: ${{ secrets.SSH_KEY }}
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
script: |
cd [playbook_path]
ansible-playbook [playbook_name]
여기서, workflow_dispatch는 수동으로 잘 작동하는지 확인하기 위함에 넣어 준 것이다.
이제 테스트로 진행해 주면 끝..!
인데 사실 이게 되면 안된다 ㅠ__ㅠ
EC2 SSH 접속을 보통 차단해 두기 때문인데..
일단 테스트를 위해서 인바운드를 전부 열어두고 확인해 준다.
일단 Action은 정상 작동이 확인 되었다.
실제 배포 서버에서 ansible 로그 파일과, git show를 이용해서 확인!
정상 배포가 확인 되었다.
그럼, SSH 보안쪽은 어떻게 해결 해야 할 까?
gitAction에서 EC2에 접근 할 때 마다 분명 ip가 달라 질텐데..
IAM계정을 하나 추가하여, gitAction 실행시 해당 gitAction의 ip값을 추가, 배포 완료시 ip를 삭제하는 방식으로 처리하면 보안쪽 문제도 해결 될 것이다.
일단 오늘은 여기까지!
'DevOps' 카테고리의 다른 글
TypeScript에 jest를 적용해보자 (0) | 2023.05.08 |
---|---|
[Ansible] Ansible + git Action + EC2 자동배포 + IAM 보안 설정 (0) | 2023.04.27 |
[Ansible] Ansible role을 이용한 github 배포 (0) | 2023.04.26 |
[Ansible] Ansible roles (0) | 2023.04.25 |
[Ansible] Ansible install + EC2 ping test (0) | 2023.04.25 |