본문 바로가기

CICD

[Jenkins] 슬레이브 노드 (agent) 생성 및 연동 with SSH

1. ec2-user 등 사용자 명 상태로 진행하기

 

2. master 서버에 가서 root 상태로 아래 script 실행하여 RSA 키 생성 

## 홈 디렉토리로 이동
$cd ~

## .ssh 폴더 생성
$mkdir .ssh (홈 디렉토리로 이동했을 때) 또는 $mkdir ~/.ssh 

## RSA 키 생성
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /~/.ssh/id_rsa.
Your public key has been saved in /~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:~~~ [username]@[hostname]

## 생성된 공개키 확인
$cat id_rsa.pub
ssh-rsa AAAAB~~~~~~~~~~~~~~~~~~ [username]@[hostname]

## 생성된 비밀키 확인
$cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZ~~~~~~~~~~~~~~~~~~~~~
		....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----END OPENSSH PRIVATE KEY-----

 

3. slave(agent) 서버에 가서 Master 서버에서 만든 공개 키 (public key) 등록

## Slave 서버에서 홈 디렉토리 이동
$cd ~

## .ssh 폴더 생성
$mkdir .ssh (홈 디렉토리로 이동했을 때) 또는 $mkdir ~/.ssh

## authorized_keys 생성
$vi authorized_keys
ssh-rsa AAAAB~~~~~~~~~~~~~~~~~~ [username]@[hostname]
	####### 간단한 vi 편집기 사용법 #######
1. 콘솔창/터미널창 에서 [$vi 파일명]으로 파일 생성
2. esc 누르고 i 입력 후 편집 시작
3. 작성 후 esc 누르고 :wq!(저장한다는 뜻) 입력 후 엔터
	##################################

## authorized_keys 확인
$cat authorized_keys

4. jenkins global credential 등록

- jenkins 메인 -> Credentials -> System ->  Global credentials (unrestricted)

 

kind SSH를 통해 접속할 것이므로 SSH Username with private key 선택
ID 원하시는 아무 이름 작성
Description 설정하는 Credentials 설명
Username 접속하려는 Slave 서버의 계정(username)
Private Key Master 서버에서 생성한 비밀키 입력($cat id_rsa 하여 나온 값 전체)

 

5. Slave 서버 jenkins root directory 생성 및 권한 부여

$sudo mkdir -p /var/lib/jenkins
$sudo mkdir -p /var/lib/jenkins/.ssh
$sudo cp /root/.ssh/authorized_keys /var/lib/jenkins/.ssh/authorized_keys
$sudo chmod 700 /var/lib/jenkins/.ssh
$sudo chmod 600 /var/lib/jenkins/.ssh/authorized_keys
$sudo chown -R 1000:1000 /var/lib/jenkins

 

6. pipeline script 에 agent 부분을 아래와 같이 수정

agent {label 'pipeline-node'}

 

7. master 서버에 가서 root 상태로 아래 script 실행하여 known_hosts 생성 (13.209.85.111 ip 는 예시임)

ssh-keyscan -p 22 13.209.85.111 >> /var/lib/jenkins/.ssh/known_hosts
반응형