본문 바로가기

DevOps

DevOps - Jenkins로 Ansible 자동화 트리거하기 – 웹 기반 운영 자동화 구축기 (3편)

728x90

웹 UI로 운영 자동화를 확장하다

CLI에서만 실행되던 Ansible 작업을 Jenkins와 연동하면서, 웹 기반의 클릭 운영 자동화 구조로 완성했습니다.

PATCH / ROLLBACK / RESTART로 나누고, 필요시 target_id를 입력해 특정 서비스만 재시작하도록 구성했습니다.


Jenkins 설치와 기본 연동

설치 방식: dnf 사용

sudo dnf install jenkins
sudo systemctl enable --now jenkins

설치 후 포트(기본 8080)를 통해 Jenkins 웹 UI 접속이 가능합니다.

[DevOps] - DevOps - Rocky Linux 9.5에 Jenkins 설치하기 (자동화 서버 구축 시작)

Ansible 연동 구조 요약

  • Jenkins Job에서 shell 명령어로 ansible-playbook 실행
  • Playbook 경로는 공유 디렉터리로 관리
  • 실행 대상 서버, 작업 유형, 선택 인덱스 등을 매개변수로 전달

Jenkins 파라미터 구성

1. 아이템 생성 - Freestyle project

 

2. 매개변수 있음 체크 (Choice Parameter 생성)

 

3. ACTION 파라미터 생성

 

4. String Parameter 생성

파라미터 타입 설명
ACTION Choice Parameter PATCH / ROLLBACK / RESTART 중 선택
TARGET_ID String Parameter RESTART 작업 시 특정 인덱스 지정 (선택사항)

 

5. Execute shell 추가

 

6. 내용 추가

Execute Shell (최종)

EXTRA_VARS=""

# RESTART 작업에서만 사용
if [ "$TARGET_ID" != "" ]; then
  EXTRA_VARS="$EXTRA_VARS target_id=$TARGET_ID"
fi

# Playbook 실행
ansible-playbook -i /path/to/inventory.ini /path/to/playbooks/${ACTION}.yml --extra-vars "$EXTRA_VARS"

PATCH는 /mnt/patches/YYYYMMDD 내 폴더를 자동으로 탐색해 실행됩니다. Jenkins에서는 version을 받지 않습니다.


NAS 접근 이슈: Jenkins는 안 보인다?

Jenkins는 기본적으로 jenkins 사용자 계정으로 실행되며, 이 계정은 bash 환경이 설정되지 않은 경우가 많습니다.

이로 인해 아래와 같은 문제에 직면했습니다:

  • NAS 접근 불가 – Jenkins 계정에 쉘 권한이 없어 mount 된 NAS 접근 자체가 안 됨
  • Permission denied 오류 – ansible-playbook 실행 중 공유 폴더 읽기 실패

해결 방법

  1. jenkins 사용자에 /bin/bash 권한 부여
    sudo usermod -s /bin/bash jenkins
  2. 공유 폴더(mount 경로)에 777 권한 적용
    sudo chmod -R 777 /mnt/patches
    (보안상 최소 권한 원칙은 운영 후 조정 필요)
  3. Playbook 디렉터리 소유자 변경
    sudo chown -R jenkins:jenkins /path/to/ansible/playbooks

이 과정을 통해 Jenkins가 NAS 경로에 접근 가능해지고, ansible 실행 환경도 확보됩니다.


실행 흐름 요약

  1. Jenkins 웹 UI에서 작업 유형 선택 (PATCH / ROLLBACK / RESTART)
  2. RESTART 작업일 경우 target_id 입력
  3. 클릭으로 Ansible 플레이북 실행
  4. 결과는 Jenkins 콘솔 출력으로 확인

 


정리하며: 3편에서 마무리

  • CLI에서만 가능하던 작업을 웹 기반으로 확장
  • NAS 권한 문제 해결이 연동의 핵심
  • Jenkins는 bash 권한 + 파일 소유자 일치가 필요

이번 시리즈는 실무에서 자주 반복되는 운영 작업을 자동화하는 전체 흐름을 담았습니다.

이 글이 같은 고민을 가진 운영자, DevOps 담당자들에게 도움이 되길 바랍니다.

 

DevOps - Ansible로 Windows 서비스 자동화 구축하기 – 수작업 없이 패치·롤백·재시작까지 (1편)

DevOps - Ansible로 Windows 서비스 자동화 구축하기 – YAML 구성과 실행 흐름 분석 (2편)

728x90
반응형