兩種常見掛載Jenkins slave節點的方法
1、掛載slave節點的方法
在Jenkins的Master上,進入Mange node頁面,可以管理node節點,例如新加、刪除等操作。
新加node節點的頁面如下:
其中,
Name是節點名字;
Description是節點描述;
# of executors是該節點可以同時執行job的數量;
Remote root directory主要是添加了workspace的目錄;
Label是該節點的標籤名,在執行job的時候,可以使用該標籤指定job執行的node;
Usage是你如何使用該節點,通常選擇Utilize this node as much as possible,即儘量使用該節點。
Lance method:是將該node掛載到master上的方法。這裡有四個選項,常用的是前兩選項,即“Launch slave agents on Unix machine via SSH”和“Launch slave agents via Java Web Start”。本文將詳細介紹這兩種掛載node的方法。
Availability是你何時連線該節點。通常選擇一直連線即可,即“Keep this slave on-line as much as possible”。
2、通過SSH連線node
關於SSH連線slave,jenkins有如下描述:
Launch slave agents on Unix machines via SSH
Starts a slave by sending commands over a secure SSH connection. The slave needs to be reachable from the master, and you will have to supply an account that can log in on the target machine. No root privileges are required.
這段描述的意思是說,選擇此種方式連線時,master和slave必須是能夠通過ssh進行連線的,必須有slave機器的賬號才行,但不要求必須是root賬號。
這種方式的前提是需要安裝SSH Slaves plugin外掛。
這種方式的步驟如下:
1、輸入slave節點的IP。
2、Add Credentials:
有如下兩種方式:
1)通過Username with password方式
需要知道slave機器的使用者名稱和密碼,見下圖:
2)通過SSH Username with private key方式
需要先在master機器上生成ssh key pair。生成的 public key放到slave機器的 ~/.ssh/authorized_keys裡面。然後chmod 600 ~/.ssh/authorized_keys。
然後,新增連線slave的credential,見下圖:
這兩種方式的Scope選項,我選擇的是System,表示這個Credentials僅僅是用來master和node進行連線用的。還有另外一種是“Global(Jenkins、nodes、items、child items)”,這種scope的Credential可以用來連線git等其他機器。具體選擇哪種scope,根據自己的需要。就連線slave這個需求來說,哪種scope的credential都可以。
Username填寫在master上生成key pair時使用的使用者名稱。
Private key選擇From the jenkins master ~/.ssh
【擴充套件知識】
Jenkins的SSH Credentials Plugin外掛,可以集中管理這些ssh 的key。安裝完這個外掛,可以在Jenkins上看到這樣的頁面
這個頁面可以對credentials進行新增、刪除、修改等操作。在這裡設定的credentials在jenkins的其他需要credentials的地方,可以通過下拉選單選擇使用,比如新增slave時,可以直接在Credentials下拉選單裡選擇對應的credential就行:
還有git clone程式碼時:
此時一定要把在master上生成的 public key新增到github賬號的的Profile setting頁面裡的SSH Keys Settings中。
3、通過JNLP連線node
關於這種方式jenkins有如下描述:
Launch slave agents via Java Web Start
Starts a slave by launching an agent program through JNLP. The launch in this case is initiated by the slave, thus slaves need not be IP reachable from the master (e.g. behind the firewall.) It is still possible to start a launch without GUI, for example as a Windows service.
這段話的意思是說,JNLP方式連線salve,不需要master必須能夠ssh連線到slave,只需要兩者能夠ping通即可。這種連線方式的slave還可以作為服務執行在slave的機器上。
這種方式連線slave的步驟如下:
按照上面圖片的設定方式設定完成後,點選save,就建好了一個slave節點。如下圖所示。
接下來的任務是將該節點連到master上。與ssh方式是master主動連線slave不同,這種JNLP方式是slave主動連線master。
登陸到slave機器上,執行上圖中的java -jar 命令,即可將slave連線到master上了。