DevOps課程-Jenkins 22自研
參考這個影片: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已經有一定順序,我後面補上要加的
會造成先後順序亂掉(所以比較正常可能要分開建)
所以這邊我先手動調整改成寫死的:
接著這邊在master機台上,原本應當執行以下指令
#在master機透過以下指令給予認證資訊:
sudo ssh-copy-id -i root@{slave IP}#完整版指令其實是:
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@{slave IP}
所以我先把pub拿到本機,再拿到slave去cat成.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還是要敲密碼
所以後來就改將兩個公私鑰都放到slave的tmp目錄
透過ssh-copy-id 在slave機台指定/tmp/id_rsa.pub做
這時候master機台:
#一定要sudo 一定要sudo 一定要sudo 一定要sudo 一定要sudo
sudo ssh root@{slave的public ip}
前面用手動複製貼上的應該有成功了,只是我忘了sudo ssh...
繼續執行Jenkins master設置:
其中憑證資訊因為我沒有slave的root的帳密,所以直接用剛剛的公私鑰做:
原則上以為點進去slave-agent會有一個Launch agent項目可以點:
但是我只看到這樣:
回到"節點"那一頁發現已經同步了:
嘗試在master的Jenkins web建立freeStyle Job來試試看能不能在slave上跑
其他git都不用,就執行
接著就是到slave機台上的工作目錄/tmp去看有沒有workspace:
大致架構如下: