[CI/CD] Jenkins + Ansible + Docker 연동

2025. 4. 30. 10:55·DevOps

목표: 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 구성 요약

  1. Publish Over SSH 플러그인 설치
  2. 서버 등록 
  3. Git 저장소 연동
  4. 빌드 설정
    • clean package
  5. 빌드 후 조치
    • 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
'DevOps' 카테고리의 다른 글
  • [k8s] 쿠버네티스 명령어 및 기능 정리
  • [CI/CD] Tomcat & Jenkins_1
  • [CI/CD] Tomcat
  • [k8s] Pods 구성 및 도메인 연동 실습
cumo
cumo
  • cumo
    이것저것
    cumo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 이것저것 (1)
      • 보안뉴스 (14)
      • Project (9)
      • wargame (1)
      • Cloud (7)
      • DevOps (11)
      • Linux (20)
      • 네트워크 (23)
      • AWS Developer BootCamp (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 도구모음 사이트
    • 참고 기술 블로그
  • 공지사항

  • 인기 글

  • 태그

    1
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cumo
[CI/CD] Jenkins + Ansible + Docker 연동
상단으로

티스토리툴바