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까지 세팅하도록 하겠습니다.
'CICD > EC2' 카테고리의 다른 글
EC2 CICD Automation - 6. CodeDeploy (Blue/Green) (0) | 2020.01.28 |
---|---|
EC2 CICD Automation - 5. CodeDeploy (Rolling) (0) | 2020.01.25 |
EC2 CICD Automation - 4. Jenkins Job (0) | 2020.01.24 |
EC2 CICD Automation - 3. Jenkins, CodeCommit, S3 세팅 (0) | 2020.01.23 |
EC2 CICD Automation - 1. Intro (0) | 2020.01.23 |