持续集成高级篇之基于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盘(也可以是其它盘),然后进入文件夹里面,内容类似如下:
在当前目录下打开powershell(或者从其它位置打开,cd到当前目录),在powershell命令窗口输入.\install-sshd.ps1
,执行安装命令.
如果在执行过程中powershell报错,提示权限不足,则进行以下设置
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
,很多网上的教程没有指定scope,则很容易造成安全问题,在个人电脑上无所谓,在服务器上一定要重视过高的权限.
完了以后再执行FixHostFilePermissions.ps1
和FixUserFilePermissions.ps1
这两个文件.(在powershell命令窗口输入.\文件名
).
启动ssh服务.
安装完成以后,ssh相关服务默认是不启动的,我们打开服务管理界面,手动启动它们并把启动类型设置为自动,这样服务器重启开机时ssh相关的服务就会自动启动.
windows10开启ssh
windows较新的版本已集成了openssh,但是需要手动开启它.
- 进入
我的电脑
,然后点击上面的计算机
标签,然后选择卸载或更新应用
- 在出现的界面里选择
管理额外功能
- 点击
添加功能
,然后在出现的列表里找到ssh相关的功能,都添加上
把openssh所在文件夹添加到path
我们把win32-openssh所在文件夹路径添加到环境变量path里,这样我们就可以在控制台输入ssh
命令来连接远程主机,而不需要类似xshell,putty这样的终端工具.
生成ssh key
添加完环境变量后,我们打开cmd或者powershell命令窗口,输入ssh-keygen
命令,生成ssh key,输入命令后一路回车.最终生成的key存放在C:/Users/当前用户名/.ssh/
目录下.
其中id_rsa
为私钥,id_rsa.pub
为公钥,authorized_keys
为授权访问本机的远程电脑的公钥,known_hosts
为,初次访问远程主机时存储的信息.晚些时候我们会用到这些文件.
安装完ssh以后如果忘记了它的安装位置,打开命令窗口,输入
where ssh
就可以看到ssh.exe所在的目录.
持续集成高级篇之基于win32-openssh搭建jenkins混合集群(一)的更多相关文章
- 持续集成高级篇之Jekins脚本参数化构建
系列目录 本系列已经很久没有更新了,接前面基础篇,本系统主要介绍jenkins构建里的一些高级特性.包括脚本参数化,Jenkins Pipeline与及在PipeLine模式下如何执行常见的传统构建任 ...
- Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境
本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...
- 持续集成高级篇之Jenkins cli与Jenkins ssh
系列目录 Jenkins Cli介绍 Jenkins Cli为Jenkins提供的一个cli工具,此工具功能非常强大,可以完成诸如重启jenkins,创建/删除job,查看job控制台输出,添加/删除 ...
- 持续集成高级篇之Jenkins Pipeline 集成sonarqube
系列目录 前面章节中我们讲到了Sonarqube的使用,其实Sonarqube获取msbuild结果主要是执行三个命令,开始标记,执行msbuild,结束标记,这些都是命令,是非常容易集成到我们ci流 ...
- 持续集成高级篇之Jekins参数化构建(二)
系列目录 上一节我们讲解了如何使用bat脚本或者powershell脚本自身的机制来达到参数化构建的目的,这在一定程序上增加了灵活性,然而缺点也相当明显:它只能适应一些相对比较固定的参数传入(比如像上 ...
- 持续集成高级篇之Jekins参数传入与常见任务
系列目录 有的童鞋可能已经发现,PipeLine项目与自由式项目相比,可配置的项少了很多,比如说环境变量定义,所有步骤完成后执行动作,拉git代码库等.其实这些功能并没有缺,而是配置的方式不一样了,以 ...
- 持续集成高级篇之Jenkins Pipeline git拉取
系列目录 PipeLine中拉取远程git仓库 前面讲自由式任务的时候,我们可以看到通过自由式job里提供的图形界面配置git拉取非常方便的,实际上使用PipeLine也并不复杂.这一节我们展示一下如 ...
- 持续集成高级篇之Jenkins资源调度
系列目录 之前的示例我们主要关注点在于功能的实现,都是在一个节点的完成了.有了多个节点后,必须涉及到资源的调度问题.本节我们讲解在创建任务时与资源调度的有关选项以及一些平时没有注意到的但在生产环境需要 ...
- 持续集成高级篇之Jenkins windows/linux混合集群搭建(二)
系列目录 前面我们说过,要使用ssh方式来配置windows从节点,如果采用ssh方式,则windows和linux配置从节点几乎没有区别,目前发现的惟一的区别在于windows从节点上目录要设置在c ...
随机推荐
- 关于使用springmvc过程中过滤器与拦截器的区别理解
- springboot整合mybatis时无法读取xml文件解决方法(必读)
转 http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...
- Spring AOP 面向切面的Spring
定义AOP术语 描述切面的常用术语有: 通知 (advice) 切点 (pointcut) 连接点 (joinpoint) 下图展示了这些概念是如何关联的 Spring 对AOP的支持 Spring提 ...
- 关于引入js文件乱码的问题
对于大多数的web页面,我们一般都是使用如下两种编码:UTF-8.GB2312.所以我们只需要同意页面和js编码就可以解决乱码问题: 对于GBK页面引用编码为UTF-8编码的JavaScript文件如 ...
- 考试安排查询脚本(CUP)
去年热情高涨的时候心血来潮做了个简易的查询脚本,限于当时技术水平(菜),实现得不是很好,这几天终于想起来填坑了.环境依赖: brew install python3 pip3 install requ ...
- 线上调试bug
在以往的工作中,线上一有bug,就需要把文件弄到本地来改,但经常会碰见本地环境又和线上不一样,导致调试困难,闭着眼睛改好之后传到线上去看对不对,不对的话又要改,循环往复,要多麻烦就有多麻烦啊. 今天给 ...
- Linux 常用命令及使用方法
1. type :查询命令 是否属于shell解释器 2. help : 帮助命令3. man : 为所有用户提供在线帮助4. ls : 列表显示目录内的文件及目录 -l 以长格 ...
- DataOps系列丨数据的“资产负债表”与“现状”
作者:DataPipeline CEO 陈诚 <跨越鸿沟>的作者Geoffrey Moore曾说“没有数据,运营企业就像一个又聋又瞎的人在高速上开车一样”.数据的价值从未像现在这样被企业重 ...
- 制造资源计划(Manufacturing Resource Planning,Mrp II)
制造资源计划(Manufacturing Resource Planning,Mrp II) 概括: 以物料需求计划(MRP)为核心的企业生产管理计划系统,MRP II 是以工业工 ...
- 不等"金九银十",金风八月,我早已拿下字节跳动的offer
字节跳动,我是在网上投的简历,之前也投过一次,简历都没通过删选,后来让师姐帮我改了一下简历,重新投另一个部门,获得了面试机会.7月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准 ...