본문 바로가기
project/Cloud

Azure를 활용한 DevOps 프로젝트 - 3(jenkins, ansible, docker-registry, gitea 설정)

by seohan1010 2025. 10. 9.

https://automate1010.atlassian.net/browse/SCRUM-11?atlOrigin=eyJpIjoiYzg0NjhjNzRjODUzNGY2Yzg1NWRkMGQxZDU5YWUwNTAiLCJwIjoiaiJ9

 

Jira

 

automate1010.atlassian.net

 

 

-인스턴스 설정 계획 
-> 클라우드 인프라 현황 

 

-> 시나리오 
: 코드를 클라우드 상의 gitea에 업로드
: jenkins에서 gitea의 코드의 변경 

  변경된 프로젝트 소스코드를 build
: build된 프로젝트 소스코드를 
  ansible이 있는 vm으로 전송 
: 전송후 docker image로 빌드하여 
  docker-registry에 업로드 
: jenkins에서 ansible이 설치된 vm에 있는 
  ansible-playbook을 실행하도록 하는 
  job을 실행하도록 설정 


-git push시 push 할때마다 로그인 하지 않는 방법 
->  .git/config 열기
:    vi .git/config

-> 아래와 같이 수정 
: [remote "origin"]
    url = https://YOUR_USERNAME:YOUR_PAT@github.com/YOUR_USERNAME/myrepo.git
    fetch = +refs/heads/*:refs/remotes/origin/*


-jenkins 에서 publish over ssh 할때 필요한 설정 
-> sudo apt update
    sudo apt install -y openssh-client

-접속되는 가상머신에 필요한 설정 
-> sudo apt update
    sudo apt install -y openssh-server
    sudo systemctl enable --now ssh

-webhook을 사용하는 법 
-> gitea에서 jenkins로 webhook을 보내도록 하기 
: jenkins에서 플러그인 설치 
  1. Generic Webhook Trigger
-> gitea > settings > web hooks에서 jenkins에 설정 한 정보를 
    바탕으로 webhook을 추가해준다. 
webhook은 http:// ip주소:포트번호/generic-webhook-trigger/invoke?token=test

위와 같은 형태 

 

-docker image에 태그 생성하기 
-> docker image tag mysql:0.0.1  10.0.0.6:5000/db/mysql:0.0.1
: 위와 같이  태그를 생성하면 이미지를 업로드할때 dockerhub가 아닌 
  다른 곳으로도 이미지를 업로드할수 있다 

-docker 재시작시 컨테이너도 재시작하도록 하는 설정 
-> docker container run -d -p 3306:3306 --restart always 10.0.0.6:5000/db/mysql:0.0.1

 

 

-docker 컨테이너 실행시 저장된 데이터를 영속적으로 저장하는 방법 
-> 볼륨 생성 
: docker volume create mysql_data
-> 컨테이너 실행시 옵션을 설정해 준다. 
: docker run -d \
  --name mariadb \
  --restart always 
  -v mysql_data:/var/lib/mysql \
  10.0.0.6:5000/db/mysql:0.0.1

 

-jenkins의 tool 설정에서 git 추가하기 
-> linux
: 터미널에서 which git을 입력 
: 결과로 나온 경로를 tool의 git 영역에 추가 

 

-docker-registry의 이미지를 삭제할수 있게 설정하기 
-> docker run -d \
  -p 5000:5000 \
  --name registry \
  -e REGISTRY_STORAGE_DELETE_ENABLED=true \
  -v /data/registry:/var/lib/registry \
  registry:2

 

-Jenkins publish over ssh시 ansible-playbook 실행 오류 관련 
-> 파일이 전송될 디렉터리와 Exec Shell 영역에 작성한 명령어가 
    실행되는 디렉터리가 다르다 
: 파일은 Remote directory의 위치로 이동되지만 
  Exec command의 명령어는 접속한 유저의 홈 디렉터리(~/) 에서 실행이 된다.  

: 명령어를 실행할 위치로 이동해서 명령어를 실행해 주어야 한다. 

 




-결과 
-> 아래와 같이 클라이언트 -> 서버 -> db 연결이 모두 되도록 하였다.