系列目錄html
前面的demo咱們使用的都是隻有一個windows主節點的的jenkins,實際生產環境中,一個節點每每是不能知足需求的.好比,.net項目要使用windows節點構建,java項目若是部署在linux服務器上每每也須要目標類型的linux節點作爲構建節點,開發中使用的jdk版本不一樣也可能須要不一樣的構建主機.構建docker鏡像每每也須要linux主機(強烈不建議使用docker for windows 進行linux環境的docker構建).本節咱們講解如何搭建一個主節點爲windows server主機,從節點同時包含windows server和centos的jenkins集羣java
須要注意的是,因爲windows不支持ssh(至少目前絕大多數線上的windows server主機是這樣的),所以windows從節點每每是經過JNLP
的方式搭建的.而linux則相對較爲簡單,只須要配置ssh便可.linux
使用JNLP
配置從節點雖然也不十分複雜,可是缺點也比較明顯.那就是須要在目標主機上啓動一個控制檯程序,一方面這個程序容易被誤關,另外一方面若是windows server重啓則須要手動把它啓動起來,這樣極大增長了工做量.若是運維的工做負荷很是高,極可能在一次大規模主機重啓後忘記重啓一些軟件,這樣不少錯誤可能在已經影響使用的狀況下才會發現.所以,這裏咱們探索一種新的方式,即便用微軟公司開發的win32-openssh
(現已集成到windows 10和windows server 2019),配置也很是方式.有了win32-openssh,咱們就能夠像linux主機同樣使用ssh方式配置windows從節點.雖然咱們提倡使用win32-openssh,可是仍然會介紹如何使用JNLP來配置windows從節點git
通過筆者測試,win32-openssh支持windows server 2008及以上版本,目前恐怕沒有更老的服務器版本了吧,你們不用擔憂生產環境沒法使用的問題.固然,win32-openssh的用途毫不僅限於搭建jenkins混合集羣,還能夠用它完成更多的基於windows的自動化管理工做.筆者基於win32-openssh作了一套windows服務的自動化管理工具(支持windows服務的關閉,更新,啓動,重啓,中止,擴容等功能),目前部署在大約30臺線上服務器上.github
前面咱們說到要基於win32-openssh來基於ssh配置Jenkins的windows從節點,這節咱們就先介紹如何安裝win32-openssh,而後緊接着開始使用ssh配置jenkins windows從節點.docker
linux從節點ssh配置也是同樣,所以再也不單獨介紹linux從節點的ssh配置shell
咱們進入openssh-win32github頁面進行下載,根據本身系統位數選擇32位或者64位的.windows
下載完成之後進行解壓,把解壓後的文件夾放到C盤(也能夠是其它盤),而後進入文件夾裏面,內容相似以下:centos
在當前目錄下打開powershell(或者從其它位置打開,cd到當前目錄),在powershell命令窗口輸入.\install-sshd.ps1
,執行安裝命令.安全
若是在執行過程當中powershell報錯,提示權限不足,則進行如下設置
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
,不少網上的教程沒有指定scope,則很容易形成安全問題,在我的電腦上無所謂,在服務器上必定要重視太高的權限.
完了之後再執行FixHostFilePermissions.ps1
和FixUserFilePermissions.ps1
這兩個文件.(在powershell命令窗口輸入.\文件名
).
安裝完成之後,ssh相關服務默認是不啓動的,咱們打開服務管理界面,手動啓動它們並把啓動類型設置爲自動,這樣服務器重啓開機時ssh相關的服務就會自動啓動.
windows較新的版本已集成了openssh,可是須要手動開啓它.
個人電腦
,而後點擊上面的計算機
標籤,而後選擇卸載或更新應用
管理額外功能
添加功能
,而後在出現的列表裏找到ssh相關的功能,都添加上咱們把win32-openssh所在文件夾路徑添加到環境變量path裏,這樣咱們就能夠在控制檯輸入ssh
命令來鏈接遠程主機,而不須要相似xshell,putty這樣的終端工具.
添加完環境變量後,咱們打開cmd或者powershell命令窗口,輸入ssh-keygen
命令,生成ssh key,輸入命令後一路回車.最終生成的key存放在C:/Users/當前用戶名/.ssh/
目錄下.
其中id_rsa
爲私鑰,id_rsa.pub
爲公鑰,authorized_keys
爲受權訪問本機的遠程電腦的公鑰,known_hosts
爲,初次訪問遠程主機時存儲的信息.晚些時候咱們會用到這些文件.
安裝完ssh之後若是忘記了它的安裝位置,打開命令窗口,輸入
where ssh
就能夠看到ssh.exe所在的目錄.