웹 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 실행 중 공유 폴더 읽기 실패
해결 방법
- jenkins 사용자에 /bin/bash 권한 부여
sudo usermod -s /bin/bash jenkins
- 공유 폴더(mount 경로)에 777 권한 적용
(보안상 최소 권한 원칙은 운영 후 조정 필요)sudo chmod -R 777 /mnt/patches
- Playbook 디렉터리 소유자 변경
sudo chown -R jenkins:jenkins /path/to/ansible/playbooks
이 과정을 통해 Jenkins가 NAS 경로에 접근 가능해지고, ansible 실행 환경도 확보됩니다.
실행 흐름 요약
- Jenkins 웹 UI에서 작업 유형 선택 (PATCH / ROLLBACK / RESTART)
- RESTART 작업일 경우 target_id 입력
- 클릭으로 Ansible 플레이북 실행
- 결과는 Jenkins 콘솔 출력으로 확인
정리하며: 3편에서 마무리
- CLI에서만 가능하던 작업을 웹 기반으로 확장
- NAS 권한 문제 해결이 연동의 핵심
- Jenkins는 bash 권한 + 파일 소유자 일치가 필요
이번 시리즈는 실무에서 자주 반복되는 운영 작업을 자동화하는 전체 흐름을 담았습니다.
이 글이 같은 고민을 가진 운영자, DevOps 담당자들에게 도움이 되길 바랍니다.
DevOps - Ansible로 Windows 서비스 자동화 구축하기 – 수작업 없이 패치·롤백·재시작까지 (1편)
DevOps - Ansible로 Windows 서비스 자동화 구축하기 – YAML 구성과 실행 흐름 분석 (2편)
'DevOps' 카테고리의 다른 글
DevOps - Ansible로 Windows 서비스 자동화 구축하기 – YAML 구성과 실행 흐름 분석 (2편) (1) | 2025.04.11 |
---|---|
DevOps - Ansible로 Windows 서비스 자동화 구축하기 – 수작업 없이 패치·롤백·재시작까지 (1편) (0) | 2025.04.10 |
DevOps - Rocky Linux 9.5에 Jenkins 설치하기 (자동화 서버 구축 시작) (1) | 2025.04.09 |
DevOps - Ansible 설치 및 Windows 서버 연결 (Rocky Linux 9.5 기준) (0) | 2025.04.09 |
DevOps - Synology DSM 7에서 Docker를 활용한 SVN 서버 구축 및 복원하기 (0) | 2025.02.17 |