DevOps課程-Jenkins 22自研

嘗試Jenkins Master Slave架設-一般安裝Jenkins透過SSH搭建Slave Node(成功!)

ZONGRU Li
May 16, 2022

參考這個影片:https://youtu.be/pzG_ZQNbZug

過程我有幾步改造,因為我不知道怎麼拿到AWS EC2的root密碼!

建置普通的agent node

首先確定兩台都有開啟ssh連線的相關設定

#執行以下確認設定:
sudo vi /etc/ssh/sshd_config

兩台這個設定都要改!!

#改好後重load sshd:
sudo systemctl restart sshd

master機台上建立公私鑰

#用root身分執行指令:
sudo ssh-keygen

然後這時我想起來應該要額外增加sg設定,讓slave可以被Master伸進去:

不過因為Terraform建置resource已經有一定順序,我後面補上要加的

會造成先後順序亂掉(所以比較正常可能要分開建)

所以這邊我先手動調整改成寫死的:

設定OK

接著這邊在master機台上,原本應當執行以下指令

#在master機透過以下指令給予認證資訊:
sudo ssh-copy-id -i root@{slave IP}
#完整版指令其實是:
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@{slave IP}

所以我先把pub拿到本機,再拿到slavecat.ssh/authorized_keys

#其實整體來說ssh-copy-id就是完成以下動作:
scp .ssh/id_rsa.pub user@other-host:
ssh user@other-host 'cat id_rsa.pub >> .ssh/authorized_keys'
ssh user@other-host 'rm id_rsa.pub'

先複製到非root目錄,不然FZ也搬不了...

以下畫面是slave機:

接著可以嘗試看看master ssh連線到slave機:

後來嘗試ssh還是要敲密碼

所以後來就改將兩個公私鑰都放到slavetmp目錄

透過ssh-copy-idslave機台指定/tmp/id_rsa.pub

這是slave機台上,直接在本機做就不用敲密碼了

這時候master機台:

#一定要sudo 一定要sudo 一定要sudo 一定要sudo 一定要sudo
sudo ssh root@{slave的public ip}

前面用手動複製貼上的應該有成功了,只是我忘了sudo ssh...

繼續執行Jenkins master設置:

其中憑證資訊因為我沒有slaveroot的帳密,所以直接用剛剛的公私鑰做:

原則上以為點進去slave-agent會有一個Launch agent項目可以點:

但是我只看到這樣:

回到"節點"那一頁發現已經同步了:

嘗試在masterJenkins web建立freeStyle Job來試試看能不能在slave上跑

其他git都不用,就執行

接著就是到slave機台上的工作目錄/tmp去看有沒有workspace:

大致架構如下:

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet