beaniejoy / dongne-cafe-api

☕️ kotlin & spring boot application (toy project) / siren order service for local cafe
2 stars 1 forks source link

Jenkins 이용한 배포 프로세스 구축 (1) - local 환경에서 구축 #40

Closed beaniejoy closed 1 year ago

beaniejoy commented 1 year ago

(jenkins server는 클라우드 서버 비용 문제로 local virtual box에서 사용)

beaniejoy commented 1 year ago

Local Virtual Machine에서 AWS 서버 Ansible 연결

ansible을 이용해 aws lightsail(ec2)로 ping 모듈로 연결확인을 시도

install ansible

$ sudo yum install ansible

만약 No package ansible available로 install이 되지 않는다면

$ sudo yum install epel-release
$ sudo yum repolist

실행 후 install 진행

inventory 생성 후 ansible ping 모듈 실행

# hosts 파일
[test]
(ec2_ip_address)    ansible_user=ec2-user
$ ansible test -i hosts -m ping
beaniejoy commented 1 year ago

🧐 Jenkins & Ansible 내용 설정

Install Jenkins Plugin


📌 Jenkins 설정

Publish Over SSH


📌 Ansible 설정

python 관련 WARNING Message 제거

ansible-playbook command 실행시 아래와 같은 warning message 출력
(사실 실행하는데 치명적인 결함은 아니지만 경고 메시지 자체가 불쾌해서,,,)

[WARNING]: Platform linux on host xxxxxx s using the discovered Python
interpreter at /usr/bin/python, but future installation of another Python
interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen
ce_appendices/interpreter_discovery.html for more information.

inventory 파일 구성

// ~/ansible/inventory/hosts
[ec2]
xx.xx.xx.xx ansible_user=ec2-user   ansible_ssh_private_key_file=[path]

ansible inventory hosts 파일에 설정된 ec2 서버에 대한 private key 파일을 각 host 별로 적용하는 방식 선택
지금은 서버가 하나지만 여러 서버를 관리해야한다면 hosts 파일에서 각 host 별로 private key 파일을 관리하는 것이 좋다고 개인적으로 생각
(ansible ssh_private_key_file 설정 관련 링크)

Jinja2 템플릿 적용

template 모듈과 copy 모듈은 비슷하지만 다른점은, template는 파일 안에 변수 등이 있으면 그걸 랜더링해서 보여준다.
(이 특징 때문에 Jinja2 템플릿 사용 필요)