持續集成高級篇之基於win32-openssh搭建jenkins混合集群(一)


系列目錄

前面的demo我們使用的都是只有一個windows主節點的的jenkins,實際生產環境中,一個節點往往是不能滿足需求的.比如,.net項目要使用windows節點構建,java項目如果部署在linux服務器上往往也需要目標類型的linux節點做為構建節點,開發中使用的jdk版本不同也可能需要不同的構建主機.構建docker鏡像往往也需要linux主機(強烈不建議使用docker for windows 進行linux環境的docker構建).本節我們講解如何搭建一個主節點為windows server主機,從節點同時包含windows server和centos的jenkins集群

需要注意的是,由於windows不支持ssh(至少目前絕大多數線上的windows server主機是這樣的),因此windows從節點往往是通過JNLP的方式搭建的.而linux則相對較為簡單,只需要配置ssh即可.

使用JNLP配置從節點雖然也不十分復雜,但是缺點也比較明顯.那就是需要在目標主機上啟動一個控制台程序,一方面這個程序容易被誤關,另一方面如果windows server重啟則需要手動把它啟動起來,這樣極大增加了工作量.如果運維的工作負荷非常高,很可能在一次大規模主機重啟后忘記重啟一些軟件,這樣很多錯誤可能在已經影響使用的情況下才會發現.因此,這里我們探索一種新的方式,即使用微軟公司開發的win32-openssh(現已集成到windows 10和windows server 2019),配置也非常方式.有了win32-openssh,我們就可以像linux主機一樣使用ssh方式配置windows從節點.雖然我們提倡使用win32-openssh,但是仍然會介紹如何使用JNLP來配置windows從節點

經過筆者測試,win32-openssh支持windows server 2008及以上版本,目前恐怕沒有更老的服務器版本了吧,大家不用擔心生產環境無法使用的問題.當然,win32-openssh的用途絕不僅限於搭建jenkins混合集群,還可以用它完成更多的基於windows的自動化管理工作.筆者基於win32-openssh做了一套windows服務的自動化管理工具(支持windows服務的關閉,更新,啟動,重啟,停止,擴容等功能),目前部署在大約30台線上服務器上.

安裝win32-openssh

前面我們說到要基於win32-openssh來基於ssh配置Jenkins的windows從節點,這節我們就先介紹如何安裝win32-openssh,然后緊接着開始使用ssh配置jenkins windows從節點.

linux從節點ssh配置也是一樣,因此不再單獨介紹linux從節點的ssh配置

我們進入openssh-win32github頁面進行下載,根據自己系統位數選擇32位或者64位的.

下載完成以后進行解壓,把解壓后的文件夾放到C盤(也可以是其它盤),然后進入文件夾里面,內容類似如下:

img

在當前目錄下打開powershell(或者從其它位置打開,cd到當前目錄),在powershell命令窗口輸入 .\install-sshd.ps1,執行安裝命令.

如果在執行過程中powershell報錯,提示權限不足,則進行以下設置 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process,很多網上的教程沒有指定scope,則很容易造成安全問題,在個人電腦上無所謂,在服務器上一定要重視過高的權限.

完了以后再執行FixHostFilePermissions.ps1FixUserFilePermissions.ps1這兩個文件.(在powershell命令窗口輸入.\文件名).

啟動ssh服務.

安裝完成以后,ssh相關服務默認是不啟動的,我們打開服務管理界面,手動啟動它們並把啟動類型設置為自動,這樣服務器重啟開機時ssh相關的服務就會自動啟動.

img

windows10開啟ssh

windows較新的版本已集成了openssh,但是需要手動開啟它.

  • 進入我的電腦,然后點擊上面的計算機標簽,然后選擇卸載或更新應用

img

  • 在出現的界面里選擇管理額外功能

img

  • 點擊添加功能,然后在出現的列表里找到ssh相關的功能,都添加上

img

把openssh所在文件夾添加到path

我們把win32-openssh所在文件夾路徑添加到環境變量path里,這樣我們就可以在控制台輸入ssh命令來連接遠程主機,而不需要類似xshell,putty這樣的終端工具.

生成ssh key

添加完環境變量后,我們打開cmd或者powershell命令窗口,輸入ssh-keygen命令,生成ssh key,輸入命令后一路回車.最終生成的key存放在C:/Users/當前用戶名/.ssh/目錄下.

img

其中id_rsa為私鑰,id_rsa.pub為公鑰,authorized_keys為授權訪問本機的遠程電腦的公鑰,known_hosts為,初次訪問遠程主機時存儲的信息.晚些時候我們會用到這些文件.

安裝完ssh以后如果忘記了它的安裝位置,打開命令窗口,輸入where ssh就可以看到ssh.exe所在的目錄.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM