목표: GitHub 소스코드를 Jenkins에서 빌드하여 도커 이미지로 제작, Docker Hub에 푸시하고 Ansible로 자동 배포까지 수행하는 파이프라인 구축
시스템 준비
사용자 및 권한 설정
# ansdocadmin 사용자 확인
tail /etc/passwd | grep ansdocadmin
# SSH 패스워드 로그인 허용
sudo grep Password /etc/ssh/sshd_config
PasswordAuthentication yes
sudo visudo
# 또는 /etc/sudoers.d/ansdocadmin 파일 생성
ansdocadmin ALL=(ALL) NOPASSWD: ALL
Ansible 설치 및 SSH 연결
# ansdoc에 Ansible 설치
sudo dnf -y install ansible
# docker 서버에 ansdocadmin 생성, sudo 권한 동일하게 설정
usermod -aG docker ansdocadmin
# SSH 키 복사
ssh-keygen
ssh-copy-id ansdocadmin@[docker server]
# Ansible 테스트
ansible all -m ping
Ansible hosts 등록
[그룹]
IP 등록
Jenkins 설정 및 WAR 배포
Jenkins 구성 요약
- Publish Over SSH 플러그인 설치
- 서버 등록
- Git 저장소 연동
- 빌드 설정
- clean package
- 빌드 후 조치
- WAR 파일을 /opt/ansdoc에 복사
- 필요한 디렉토리 미리 생성
Dockerfile 작성 및 이미지 빌드
#Dockerfile
FROM tomcat:latest
RUN cp -R /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps
COPY ./*.war /usr/local/tomcat/webapps
#이미지 빌드 및 실행
cd /opt/ansdoc
docker build -t 4glimage .
docker run -d -p 8080:8080 4glimage
docker ps
Ansible 이미지 자동화
yaml 작성
---
- hosts: ansdoc
tasks:
- name: Build Docker image
shell: docker build -t 4glimage .
args:
chdir: /opt/ansdoc
- name: Tag image
shell: docker tag 4glimage dockerhubID/4glimage
- name: Push image
shell: docker push dockerhubID/4glimage
도커 서버 컨테이너 배포
---
- hosts: docker
tasks:
- name: Remove existing container
shell: docker rm -f 4glappcon || true
- name: Run container from new image
shell: docker run -d --name 4glappcon -p 8090:8080 dockerhubID/4glimage
'DevOps' 카테고리의 다른 글
[k8s] 쿠버네티스 명령어 및 기능 정리 (1) | 2025.04.28 |
---|---|
[CI/CD] Tomcat & Jenkins_1 (0) | 2025.04.23 |
[CI/CD] Tomcat (0) | 2025.04.23 |
[k8s] Pods 구성 및 도메인 연동 실습 (0) | 2025.04.22 |
[K8s] Helm 과 Ingress 웹서버 통합 라우팅 구성 (0) | 2025.04.22 |