Rocky Linux/ CentOS安装Jenkins,角色权限、分布式节点配置

本文详细介绍了如何在RockyLinux、CentOS或Red Hat上安装Jenkins,配置防火墙、权限角色,包括基于Role-BasedAuthorization的权限设置,以及如何通过JNLP和Swarm增加agent,同时涉及SSH免密登录和关闭自动清理工作区的步骤。

1、Rocky Linux/ CentOS/Red Hat安装

获取jenkins安装源文件,导入公钥

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

2、安装jenkins

yum install jenkins

修改默认端口(默认是 8080 可能会和tomcat冲突,修改成8899)

vi /etc/sysconfig/jenkins

如果不行,修改jenkins.xml

# find / -name jenkins.xml  # 查找jenkins.xml
vi /usr/lib/firewalld/services/jenkins.xml

如果还是不行,修改jenkins.service

vi /usr/lib/systemd/system/jenkins.service

# 修改完后jenkins.service,需要重新加载
systemctl daemon-reload

3、开放防火墙端口

firewall-cmd --zone=public --add-port=8899/tcp --permanent

重启防火墙

firewall-cmd --reload

4、启动Jenkins

4.1、设置开机启动

systemctl enable jenkins

4.2、命令行启动

systemctl start jenkins

4.3、命令行检查运行状态

systemctl status jenkins

4.4、查看初始密码路径

cat /var/lib/jenkins/secrets/initialAdminPassword

参考:https://www.jenkins.io/doc/book/installing/linux/

5、权限角色配置

5.1、Jenkins有三款授权插件:

Matrix Authorization Straegy插件:提供基于矩阵的安全策略
Project-based Matrix Authorization Straegy插件:提供基于项目的矩阵的安全策略
Role-based Authorization Straegy插件:提供基于角色的安全策略

本文使用基于用户角色的权限Role-based Authorization Straegy插件
在可选插件中搜索"Role-based",找到Role-based Authorization Straegy安装
在这里插入图片描述

安装完插件后,在"Manage Jenkins"菜单下会多一个”Manage and Assign Roles“菜单项
在这里插入图片描述

在全局安全配置中

安全域选择”Jenkins 专有用户数据库“
授权策略选择”Role-Based Strategy“

在这里插入图片描述

5.2、角色授权

5.2.1、Manage Roles(管理角色)

全局角色
默认有个 admin 的全局角色,拥有全部权限;新建的角色,至少要分配Overrall->read权限,否则登录后提示没有权限访问
在这里插入图片描述

项目角色
可以按项目、视图等名称进行正则匹配。如角色role_dev可以,正则匹配dev_.*,可管理所有以“dev_”名称开头的项目或视图。
在这里插入图片描述

节点角色
与项目角色类似,但是按节点名称来匹配权限。
在这里插入图片描述

5.2.2、Assign Roles(分配角色)

在这里插入图片描述
在这里插入图片描述

6、增加agent

Jenkins采用的是"master+agent"架构,master负责提供界面、处理HTTP请求及管理构建环境;构建的执行则由Jenkins agent负责

6.1 通过JNLP协议增加agent

在全局安全配置中,配置Agent连接端口和协议

指定端口:9812
代理协议:Java Web Start Agent Protocol/4 (TLS 加密)

在这里插入图片描述

进入系统管理->节点管理->新建节点,
在这里插入图片描述
设置

Number of executors:1
远程工作目录:/home/jenkins
启动方式:通过Java Web启动代理

在这里插入图片描述
在这里插入图片描述

ssh登录到Jenkins agent服务器,进入/home/jenkins

# 下载agent.jar文件(JNLP协议的客户端)
wget http://192.168.245.139:8899/jnlpJars/agent.jar  #

java -jar agent.jar -jnlpUrl http://192.168.245.139:8899/computer/node%5Fs3/jenkins-agent.jnlp -secret 12153ae2170d68f77410daa10ad464bf34f989499532d46fdd01f467438a602c -workDir "/home/jenkins"

6.2 通过swarm插件增加agent

6.2.1 安装插件swarm

在这里插入图片描述

6.2.2 安装swarm-client

下载地址:https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/swarm-client/

ssh登录到Jenkins agent服务器,命令行下运行

wget https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/swarm-client/3.34/swarm-client-3.34.jar
java -jar swarm-client-3.34.jar -url http://192.168.245.139:8899/ -username penngo -password 123456 -name swarm-node

在这里插入图片描述

7、部署到不同项目ssh免密登录

7.1 修改用户Jenkins的访问权限

在Jenkins流水线任务中,默认会使用名为Jenkins的用户,执行时会报下 “Host key verification failed.” 错误

scp target/app-1.0.0-SNAPSHOT.jar root@192.168.245.137:/data/www/
Host key verification failed.
lost connection

修改/etc/passwd配置文件

vi /etc/passwd

把
jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false
修改成
jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

7.2 免密登录远程机

当前服务器192.168.245.139,部署到192.168.245.137
139服务器执行ssh-keygen命令,生成密码

su jenkins    # 切换到jenkins用户
# 执行后会生成两个文件:id_dsa、id_dsa.pub文件,前者是私钥,后者是公钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp .ssh/id_dsa.pub root@192.168.245.137:/root

137服务器执行命令

mkdir .ssh
chmod 700 .ssh
# 将目录权限改为700该目录的权限,必须是700才有效
cat id_dsa.pub >> .ssh/authorized_keys
# 修改文件权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效
chmod 600 .ssh/authorized_keys 

如果ssh远程主机报错:“ssh_exchange_identification: read: Connection reset by peer”,解决办法
在要连接的主机137上修改配置文件

vim /etc/hosts.allow

# /etc/hosts.allow文件允许指定ip主机连接本机
sshd:192.168.245.139:allow  

systemctl restart sshd

139 ssh连接137
ssh -v root@192.168.245.137 -p 22

查看ssh端口

netstat -anp |grep 22     // 查看端口占用
netstat -anp |grep ssh    // 查看进程占用的端口
ps -ef|grep ssh|grep -v grep|awk '{print $2}'|xargs kill -9   // 删掉ssh进程

修改ssh配置

vi /etc/ssh/sshd_config

8、关闭Jenkins自动清理工作区

1、Script Console输入hudson.model.WorkspaceCleanupThread.disabled = true并运行
2、在配置文件里面把这个参数添加到启动命令中。

-Dhudson.model.WorkspaceCleanupThread.disabled=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

penngo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值