Jenkins AWS EC2에 설치(with Docker)

devdo·2022년 2월 19일
0

Jenkins

목록 보기
1/8
post-thumbnail

jenkins를 AWS EC2(Ubuntu20.04) 설치하는 2가지 방식이 있다.

1) jenkins 자체 설치
2) Docker 이미지로 설치

✅개인적으로 Docker 이미지로 설치하는 방식을 추천한다!


Jenkins 자체 설치

Jenkins AWS EC2(Ubuntu20.04) 설치

❗주의) 프리티어로 EC2인스턴스가 cpu 용량이 최소 small로 맞추자. 기본용량으로 된 micro는 배포하다 중단될 가능성이 크다.

설치명령어가 업데이트를 하면서 명령어가 다소 바껴질 수 있으니 install은 가이드문서에서 실제 확인하는 게 좋다.

젠킨스 Ubuntu 설치 가이드 문서 https://www.jenkins.io/doc/book/installing/linux/#debianubuntu

sudo apt install openjdk-11-jdk
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
  
sudo apt-get update
sudo apt-get install jenkins

# jenkins 재시작
sudo service jenkins restart

# 정상여부 확인
sudo systemctl status jenkins

❗❓ 참고

실제 active(exited)가 나와도 되니 이 화면처럼 안나와도 당황하지 말고 다음 진행상항을 따라주면 된다.


✅ Docker 이미지로 실행하기(추천방식)

Docker로 이미 jenkins 이미지가 공식적으로 등록되어 있기 때문에, jenkins docker 이미지를 찾아서(dockerHub), run만 하면 아주 간단하게 설치와 실행이 동시에 진행시킬 수있다!

Ubuntu EC2에 Docker 설치는 이 블로그 참고 : https://velog.io/@mooh2jj/AWS-EC2-Docker-설치

  • Docker가 설치 이후 jenkins run 명령어 는 다음과 같다.

1) docker 명령어

# jenkins 실행
docker run \
  --name jenkins-docker \
  -p 9000:8080 -p 50000:50000 \
  -e TZ=Asia/Seoul \
  -v /home/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -u root \
  -d \
  jenkins/jenkins:lts
  • docker ps로 확인

#753ebaa3695b   jenkins/jenkins:lts      "/usr/bin/tini -- /u…"   7 days ago   Up 20 seconds       0.0.0.0:50000->50000/tcp, 0.0.0.0:9000->8080/tcp   jenkins-docker

💥 docker not found 오류

@tmp/durable-61dd8bff/script.sh: 1: docker: not found

jenkins run시 이 volume 설정을 꼭 해줘야 위 오류가 생기지 않는다.

-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker

관련블로그: https://blog.riyenas.dev/jenkins_pipeline_docker_not_found/


or

2) docker-compose 파일로 실행

$ vim docker-compose.yml

docker-compose.yaml

version: '3.7'
services:
  jenkins:
    build:
      context: .
    container_name: jenkins
    user: root
    privileged: true
    ports:
      - 9000:8080
      - 50000:50000
    volumes:
      - ./jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
## -d : 백그라운드로 실행
$ docker-compose up -d  

그외 명령어

  • 이미 컨테이너가 있을시 재시작 명령어
# jenkins 재시작
docker restart [컨테이너ID]
  • jenkins 컨테이너에 들어갈려면
# jenkins 컨테이너 접속
docker exec -it [jenkins 컨테이너ID] bin/bash
  • jenkins 컨테이너 로그를 확인할려면
# jenkins 컨테이너 log 확인
docker logs [jenkins 컨테이너ID]

Jenkins 페이지 열기

Jenkins의 기본포트는 8080이다.
8080 포트를 열기 위한 반드시 젠킨스가 설치된 AWS EC2 인스턴스 인바운드 규칙8080포트를 열어줘야 한다.

URL 입력창에 {ec2 인스턴스 pulbic ipv4주소}:8080주소를 입력하면, 드디어 jenkins 페이지가 열리고

패스워드 입력 창 페이지가 나온다. 여기엔 젠킨스 패스워드를 입력해야 한다고 한다.

젠킨스 패스워드는 cat으로 아래 경로로 확인할 수 있다.

# 초기 패스워드 확인
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
# docker 이미지로 배포시 확인
docker exec jenkins-docker cat /var/jenkins_home/secrets/initialAdminPassword

그리고 패스워드를 입력하고 들어가보면 jenkins plugins install 화면이 나온다.
Install suggested plugins를 눌러준다.

향후의 필요한 플러그인들은 수동으로 설치하는 것을 권장한다.
suggested plugins만 해도 5분 정도 걸리는 것 같다. 간단하게 커피나 한잔 하자.

install이 다되면 회원가입로그인 창이 나온다. 대충 이정도 쓰면 된다.

Username: admin
Password: {pw}
Confirm password: {pw}
Full name: admin
E-mail address: {본인 id}@gmail.com

짜잔! 젠킨스 홈페이지에 들어가진다.


### Jenkins sudo 명령 권한 부여(안해도 됨)

💥sudo: a terminal is required to read the password 오류

쉘에 입력된 명령에 sudo 명령을 젠킨스에서 시도하려면 권한을 부여하지 않아 생기는 문제이다.

젠킨스 인스턴스에 가서
sudo vi /etc/sudoers
vi 에디터로 sudoers를 불러온다.

~~ 이 곳에 아래 내용을 기입하면 해결된다.

jenkins ALL=(ALL) NOPASSWD: ALL

~~
출처: https://cokes.tistory.com/121 [Cokes Blog]



참고

profile
배운 것을 기록합니다.

0개의 댓글