Jenkins

jenkins slave node 추가하기

thxxyj 2022. 12. 8. 14:48
728x90

1. Jenkins master node에서 ssh-keygen

 

2. Jenkins node > Launch method > Launch agents via SSH

  • <Jenkins Host / Credentials 추가>
  • Host: IP 또는 Container name
  • Credentials: SSH Username with private key > Jenkins master node의 private key 등록

 

3. Jenkins master node의 known_hosts에 slave node의 Finger Print 등록 (아래 명령어 중 선택)

  • ssh-keyscan -H ${slave node IP} >> ${Remote root directory}/.ssh/known_hosts
  • ssh-keyscan -H ${slave node Container name} >> ${Remote root directory}/.ssh/known_hosts  
# ex) jenkins 에 아래와 같이 노드를 추가했다면
ssh-keyscan -H node1 >> /home/jenkins/.ssh/known_hosts

  • 여러 호스트를 한번에 입력할 때 :
  • ssh-keyscan -f ${host명 있는 파일명} >> ${Remote root directory}/.ssh/known_hosts 

 

Finger Print를 한번 등록하면 다음부터 묻지 않지만, 등록이 안되면 Finger Print 등록을 묻는 프롬프트 때문에 스크립트 실행 중 에러가 발생할 수 있다.

Jenkins에서 slave node 추가할때 Finger Print 등록 안되어있으면 node launch가 안된다.

 

 

+ 추가) 만약 위와 같이 추가했는데 permission error로 인해 node launch 가 안된다면

slave node에서

chmod -R 777 ${Remote root directory}

 

+ 추가) .ssh 권한 중요 (아래 권한 보다 크면 안됨)

  • 644: id_rsa.pub, known_hosts
  • 700: .ssh 폴더
  • 600: id_rsa, authorized_keys

<Node 연결 성공 로그>

[12/08/22 11:04:34] [SSH] Opening SSH connection to ${slave_node_container_name}:22
Searching for ${slave_node_container_name} in /var/jenkins_home/.ssh/known_hosts 
Searching for ${slave_node_container_name}:22 in /var/jenkins_home/.ssh/known_hosts 
[12/08/22 11:04:34] [SSH] SSH host key matches key in Known Hosts file. Connection will be allowed. 
[12/08/22 11:04:34] [SSH] Authentication successful.

(.......)

Agent successfully connected and online

 

* known_hosts에 제대로 등록되지 않으면 SSH Connection failed 발생함

 

 

728x90