CICD 서버 구성하기(Master - Slave)

이정훈·2023년 7월 3일
0

CI/CD

목록 보기
6/11
post-thumbnail

Master - Slave

  • 현재까지의 작업 VPC 구성
  • Public Subnet - Jenkins_Master
  • Private Subnet - Jenkins_Slave01, Jenkins_Slave02

본 구성은 Master와 Slave를 왔다갔다 하면서 설정

  • 순서대로 진행해 주세요!

1. Master 설정

  • SSH 통신으로 마스터와 슬레이브를 구성할 예정이다. 그러므로 우린 키를 발급 받아야 한다.
ssh-keygen

# +---[RSA 3072]----+
#|   ..o.oo ..+.E  |
#|   .. +Ooo =o.   |
#|    ..@.=.++=    |
#|     B + +=+..   |
#|    . . S+o.     |
#|     ..o  =.     |
#|      .o +o      |
#|      o  oo.     |
#|       oo...     |
#+----[SHA256]-----+
  • /home/ubuntu/.ssh 폴더에 id_rsa, id_rsa.pub 두개의 파일이 추가된 것을 확인 할 수 있다.
  • 먼저, id_rsa.pub의 내용을 Slave에 옮겨주자!
cat id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVcH3IMTWETvQzELkuXwbEn+fKIEzVDGVh+FVY5jrc4ABwzdjSdvGuNYExCuiZAczg+U9+rEceaj8tOluMftoVG61pEfIDXdKZWYHny/5OfFWx3ist4AXxZuSuHFdSauOQXkvIO10RPHxLT4PDZpYXQg3mocy+e1jMpCeWBApEO83MUN3aD6SNZ4Zda729zl/qH/oyX1DghfNIc33RJ+XOWrgRmMMEp6JwXNunFCHUhlscuAYj2LSa2AV6wGZIjwyCJp20Fp0lcIvlINZ7pJzCOb6KCdZUTX38z8FV1z6TzBMvOBzO9XyfqXx42tPF3c7axviOHevsC1mfG5YtiMqyHPwF/AEyAK3SCIh9jLZ5NsWZzFxwxUs6FMMD7Ghh7rr2Q5CqpLDmPlOcCXr/Xp9nDGdSMnCVY3u/Rp2adPSavJe36JeyB4ezwzk4h1yTxcEk17tzfx35PAi+ta34cFLhENLVNlnCJRY+2W4Ce4h64CuYA+9IvpmC81ub+dWq0kM= ubuntu@ip-192-168-10-120

2. Slave 설정

  • 위 마스터의 id_rsa.pub를 Slave에 옮겨야한다.
  • id_rsa.pub을 복사해서 아래 명령어로 넣어주자! 경로 확인 잘해줘야 한다.
cd /home/ubuntu/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVcH3IMTWETvQzELkuXwbEn+fKIEzVDGVh+FVY5jrc4ABwzdjSdvGuNYExCuiZAczg+U9+rEceaj8tOluMftoVG61pEfIDXdKZWYHny/5OfFWx3ist4AXxZuSuHFdSauOQXkvIO10RPHxLT4PDZpYXQg3mocy+e1jMpCeWBApEO83MUN3aD6SNZ4Zda729zl/qH/oyX1DghfNIc33RJ+XOWrgRmMMEp6JwXNunFCHUhlscuAYj2LSa2AV6wGZIjwyCJp20Fp0lcIvlINZ7pJzCOb6KCdZUTX38z8FV1z6TzBMvOBzO9XyfqXx42tPF3c7axviOHevsC1mfG5YtiMqyHPwF/AEyAK3SCIh9jLZ5NsWZzFxwxUs6FMMD7Ghh7rr2Q5CqpLDmPlOcCXr/Xp9nDGdSMnCVY3u/Rp2adPSavJe36JeyB4ezwzk4h1yTxcEk17tzfx35PAi+ta34cFLhENLVNlnCJRY+2W4Ce4h64CuYA+9IvpmC81ub+dWq0kM= ubuntu@ip-192-168-10-120" >> authorized_keys
  • 각 Slave에 넣었으면 확인을 해줘야합니다.

3. ssh-keygen 접속 확인

  • Master Server에서 Slave Server로의 ssh-keygen 접속이 되는지 확인해 주자.
ssh ubuntu@[Slave server IP]
  • Jenkins.pem 으로 만든 키를 사용하지 않고도 접속하는 것을 확인 할 수 있다.

4. Slave Server Join

  • 이제 Master Dashboard에서 Slave Server 들을 가입시켜주려고고 한다!
  • Dashboard → Jenkins 관리 → Nodes

  • 노드 Slave01을 Permanent Agent로 생성

  • Name 앞서 설정, Description에 설명
  • Number of execuors : 한번에 job을 얼마나 실행시킬것이냐.. 노예들…
  • Remote root directory : /home/ubuntu
  • Labels : Label을 가진 Jenkins 파일에 대해서만 작업을 진행
    Slave01을 인프라 구축, Slave02를 어플리케이션 build로 사용
  • Usage : 사용 방법이 두가지이다. 가능한 이것을 사용할 것이냐?
    아니면 Label에 따라 사용할 것이냐? 우린 Label에 따라 사용!

  • Launch method : 우린 ssh-keygen을 구성했으니깐 이것을 사용 할 것이다.
  • Host : Slave Server IP을 넣어준다. Private IP를 넣어준다.
  • Credentials : 그림 아래 다시 설명!
  • Host Key Verification Strategy : 알려진 키를 사용해서 확인해줘라!
  • Availability : 지금 등록하는 Slave Server를 계속 online으로 유지합시다!
  • Node Properties : 이 부분은 그냥 넘기자!
  • 생성해주자!

  • Credentials 설정
  • Domain : 기본 설정
  • Kind : 우린 SSH Private key를 사용
  • Scope : 기본 설정
  • ID : 이 친구는 Master Server 에서 ssh-keygen으로 만들었던 친구를 사용할 것이다.
    그래서 이름을 Jenkins_Master_id_rsa
  • Username : ubuntu
  • Private key 이 부분을 채워 넣어줘야 한다! 이때 Master Server에 들어가서 id_rsa을 확인해 주자!
cd /home/ubuntu/.ssh
cat id_rsa


5. Join을 위한 추가 설정!

  • Nodes를 보면 Slave 01을 찾지를 못한다ㅜㅜ
  • 그래서 log를 확인해 줘야한다.

  • 못알아 듣겠다…. 이건 Master Server에서 추가적인 사항을 실행해줘야한다.
sudo su
mkdir -p /var/lib/jenkins/.ssh
ssh-keyscan -H [Slave Server IP] >> /var/lib/jenkins/.ssh/known_hosts
sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts
sudo chmod 644 /var/lib/jenkins/.ssh/known_hosts
# sudo su
# root@ip-192-168-10-120:/home/ubuntu# mkdir -p /var/lib/jenkins/.ssh
# root@ip-192-168-10-120:/home/ubuntu# ssh-keyscan -H 192.168.20.254 >> /var/lib/jenkins/.ssh/known_hosts
# 192.168.20.254:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.20.254:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.20.254:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.20.254:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.20.254:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# root@ip-192-168-10-120:/home/ubuntu# sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts
# root@ip-192-168-10-120:/home/ubuntu# sudo chmod 644 /var/lib/jenkins/.ssh/known_hosts
# root@ip-192-168-10-120:/home/ubuntu# ssh-keyscan -H 192.168.30.26 >> /var/lib/jenkins/.ssh/known_hosts
# 192.168.30.26:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.30.26:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.30.26:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.30.26:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
# 192.168.30.26:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.7
  • 권한 문제와 ssh-key를 스캔해서 넣어주면 join 성공

6. Slave 추가

  • Master dashboard에서 Slave02를 추가해주자
  • 이름과 Host 등 변경해줘야할 사항은 잘 확인만 해주면 된다!

  • Slave02 까지 Join 된 것을 확인!

  • 여기서도 위에 했던 것 처럼 아래 명령어로 넣어줘야 한다.

ssh-keyscan -H [Slave Server IP] >> /var/lib/jenkins/.ssh/known_hosts

7. test

  • Label을 지정해서 작업해 보았다. 잘 실행되는 것을 확인!
  • Freestyle project로 생성해서 작업해 보자
  • 라벨 누구를 사용할 것인지!


profile
싱숭생숭늉

0개의 댓글