1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

Jenkins的sshagent—credential設置

1987web2023-10-06WEB开发170
利用jenkins來Deploy,有時候ContinuallyDeploy的過程中會需要ssh到另一個linux上進行操作,這時候jenkinfiles中就需要用到插件ssh-agent和在cred

利用jenkins來Deploy,有時候Continually Deploy的過程中會需要ssh到另一個linux上進行操作,這時候jenkinfiles中就需要用到插件ssh-agent和在credentials添加認證, 也就是添加jenkin服務器與目標機器的密鑰,來實現自動連接和登錄。

簡單方法:

  1. 在jenkin服務器上以jenkin用戶生成一個公鑰和密鑰,因爲jenkins運行在jenkins的linux賬戶上s:,所以需要用jenkins生成SSH key
su -s /bin/bash jenkins
ssh-keygen -t rsa -b4096cd/root/.ssh
ls

可以看到id_rsa为SSH private key,id_rsa.pub为SSH public key。

2.copy這個public key到目標服務器上

copy-ssh-id root@10.6.100.2

ssh-copy-id -i ~/.ssh/id_rsa.pubroot@10.6.100.2

這樣本機的public key就追加到了root用戶的目標服務器的/root/.ssh/authorized_keys最後了。之後可以嘗試

ssh root@10.6.100.2

如果配置成功了,應該就不需要輸入password而免密登陸了。


3.在Jenkin UI界面上,添加credentials

private key需要粘貼你的目標服務器的私鑰: /root/.ssh/id_rsa。 保存就可以

然後在jenkinsfile中,可以調用這個ssh key,當需ssh到另一臺機器的時候。

例如:

sshagent (credentials: [creadential_name]) {
sh """
   set -ev
   ssh -o StrictHostKeyChecking=no -l root 10.6.xxx.xxx << EOF
   Do........................................................			
   exit
   """
}

這樣在執行pipeline的job時,運行到jenkinsfile,就會無需密碼免鑰登陸目標機器。

前文《云原生:Jenkins构建服务器的安装》介绍了单台Jenkins服务器的安装。Jenkins一般采用主从架构搭建。Jenkins安装在一台主机上,所有的jobs都在这台机器上运行,如果运行太多jobs时,会形成等待。Jenkins实现主从架构,增加从节点的目的就是为了解决这个问题,提高效率。

搭建主从架构,只需要在master主机上安装Jenkins就可以了,其他的从节点不用安装,只需要通过slave.jar运行的。从节点环境需要安装 wget、axel、sshpass、jdk、git、maven,创建项目测试时会用到的日志目录、docker的安装、docker私有仓库的配置,这些依赖的安装和配置可以参考前文。本文重点介绍Jenkins主从节点之间的打通。

配置从节点免密登录

首先在从节点机器上创建jenkins用户,用于执行构建任务,以及一些环境配置。

创建Jenkins用户

使用root登录远程从节点机器,执行以下命令创建Jenkins用户:

adduser jenkinspasswd jenkins

生成jenkins用户的ssh密钥

在Master服务器上生成密钥文件:

$ ssh-keygen -t rsa

云原生:如何搭建Jenkins主从架构

  • 下一篇


    第5章 Pipeline数据脱敏-Jenkins系统凭据管理