본문 바로가기

CICD/EC2

EC2 CICD Automation - 2. Jenkins 설치

AWS Basic Infrastructure에서 이어서 배포 자동화를 만들어 진행해보도록 하겠습니다.

연습해 볼 구성도는 아래와 같습니다.

 

Jenkins 서버를 생성하고 세팅해보도록 하겠습니다.

EC2 Type이 최소 t3.small은 되어야 하기 때문에 t3.small / EBS 20GB로 설정하여주시고

 

 

 

server tag와 보안그룹을 위와 같이 설정하여 주도록 하겠습니다.


프라이빗 서버이기 때문에 도메인으로 접근을 해야합니다.

Target Group을 8080으로 만들어서 Jenkins서버를 연결해 준 후 

Route53 Record에 젠킨스 도메인을 ALB DNS로 CNAME Record를 생성해주겠습니다.

 

 

 



이제 서버에서 아래와 같은 쉘 스크립트를 수행하여서 젠킨스 설치 및 젠킨스 유저를 세팅하도록 하겠습니다.

 

#!/bin/bash

os_type=$(cat /etc/*-release | uniq | head -1)

if [ "${os_type}" == "NAME=\"Amazon Linux\"" ];
    then sudo amazon-linux-extras install -y epel
else
    check_jdk=$(rpm -qa | grep jdk | head -1)
    if [ -n "$check_jdk" ];
        then sudo yum remove -y $check_jdk
    fi
fi

check_expect=$(rpm -qa | grep expect)
if [ -z "$check_expect" ];
    then sudo yum install -y expect
fi

id=jenkins
pw=jenkins1!

sudo userdel $id
sudo adduser $id

expect << EOF
spawn sudo passwd $id

expect "New password:"
send "$pw\r";    

expect "Retype new password:"
send "$pw\r";    

expect eof
EOF

num=$(sudo grep -n "## Allow root" /etc/sudoers | cut -d: -f1 | head -1)
num=$((num+1))
data=$(sudo cat /etc/sudoers | sed -n ${num}p)
data2=$(echo ${data} | sed -e "s/root.*/${id}\tALL=(ALL)\tNOPASSWD: ALL/g")
sudo sed -i "${num}s/${data}/${data}\n${data2}/g" /etc/sudoers
sudo sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sudo service sshd restart

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date

sudo yum install -y python3
sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install awscli

sudo yum install -y git
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
rpm -qa java*jdk-devel
javac -version
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum install -y jenkins

sudo chkconfig jenkins on

sudo service jenkins start

sudo systemctl enable jenkins

 

위와 같이 쉘 실행 결과가 떨어지면 젠킨스가 제대로 수행된 상태입니다.

아래 명령어를 쳐서 초기 비밀번호 값을 기억해두시기 바랍니다.

 

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

jenkins 서버에 아까 매핑시킨 도메인으로 접속을 해보도록 하겠습니다.

 

 

위에서 입력한 초기 패스워드를 골라주고, suggested plugin들을 설치합니다.

 

 

admin user를 설정해 주시고

 

 

url을 매핑해 놓았다면 알아서 적용되는 것을 볼 수 있습니다.

쭉 진행해주시면 설치가 완료됩니다.

 

 

 

다음 포스트에서는 젠킨스 내부 세팅과 CodeCommit Repository, S3 Bucket까지 세팅하도록 하겠습니다.