Jenkins的sshagent—credential設置
利用jenkins來Deploy,有時候Continually Deploy的過程中會需要ssh到另一個linux上進行操作,這時候jenkinfiles中就需要用到插件ssh-agent和在credentials添加認證, 也就是添加jenkin服務器與目標機器的密鑰,來實現自動連接和登錄。
簡單方法:
- 在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系统凭据管理
第5章流水线数据脱敏-Jenkins系统凭据管理