Jenkins master slave agent配置开机自启动

本文详细介绍了如何在CentOS8系统下配置Jenkinsslaveagent,包括从master下载agent.jar,安装JDK8,启动agent并实现开机自启动,以及使用systemd管理jenkins服务的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上章节介绍Jenkins master/slave 模式的基础配置,见链接

Jenkins master slave 模式节点配置

每当slave节点重启slave agent 服务没法启动,导致Jenkins构建无法找到目标节点,我们希望slave节点在操作系统自启动后代理服务agent 可以自动启动并连接Jenkins master。

本章节在操作系统Centos8基础上添加slave agent自启动,我们以其中一个节点node_104_60为例进行演示,对应节点IP:10.110.104.60

点击节点看到节点详情

1,目标节点下载agent.jar

curl -sO http://10.110.60.123:6060/jnlpJars/agent.jar

2,安装jdk8

找到适合agent.jar对应的jdk版本并解压安装,配置环境变量,熟悉Java的大家都会自行配置即可;

3,启动agent.jar

java -jar agent.jar -jnlpUrl http://10.110.60.123:6060/computer/node%5F104%5F60/jenkins-agent.jnlp -secret 1f31dbd9f2dac19cdf56a28278ca211e92b341f4ee1fbccbb0904e96587e8518 -workDir "/data/proj/jenkins"

启动成功后可以看到节点node_104_60前面的红X消失,恢复正常,说明slave已经与master完成连接。

4,agent开机自启动

a,编写agent启动脚本 jenkins-daemon.sh

vim /data/proj/jenkins/jenkins-daemon.sh

#!/bin/bash
JENKINS_PATH=/data/proj/jenkins
cd /data/proj/jenkins
start()
{
        status
        echo "starting jenkins-agent....."
        if [ -z "$pid" ] || [ $pid -eq 0 ] ; then
                curl -sO http://10.110.60.123:6060/jnlpJars/agent.jar
                nohup $JENKINS_PATH/jdk/bin/java -jar agent.jar -jnlpUrl http://10.110.60.123:6060/computer/node%5F104%5F60/jenkins-agent.jnlp -secret @secret-file -workDir $$
JENKINS_PATH > $JENKINS_PATH/stdout.log 2>&1 &
                if [ $? -eq 0 ];then
                        sleep 3
                        status
                        if [ -z "$pid" ] ; then
                                echo "jenkins started fail....,trace log in stdout.log"
                                return
                        else
                                echo "jenkins started success, the pid=${pid}"
                        fi
                else
                        echo "jenkins start failed, excute current command error......!"
                fi
        else
                echo "jenkins pid=$pid is running,please stop it and try it again!"
        fi
}
stop()
{
        #pid=`ps -ef|grep "jenkins-agent"|grep -v "grep"|awk '{print $2}'`
        echo "begin shutdown jenkins-agent....."
        status
        if [ -z "$pid" ] ; then
                        echo "No jenkins running."
                        return 2;
        else
                echo "The jenkins(${pid}) is running..."
                #这列可以替换为kill pid但是不安全,但执行效率更高
                kill -9 $pid
                echo "shutdown jenkins ok"
        fi
}
restart() {
        stop
        sleep 5
        start
}
status() {
        pid=`ps -ef|grep "jenkins-agent"|grep -v "grep"|awk '{print $2}'`
        if [ -z "$pid" ] ; then
                        echo "No jenkins running."
                        return 1;
        fi
        echo "The jenkins(${pid}) is running..."
        return 0
}
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                restart
                ;;
        status)
                status
                ;;
        *)
                echo $"Usage: $0 {start|stop|restart|status}"
esac
                                                                                                                                                          

b,编写自启动服务注册脚本jenkins.service

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

[Unit]
Description=jenkins-agent auto start
After=network.target

[Service]
Type=forking
User=root
Group=root
#PIDFile=/data/proj/jenkins/jenkins.pid
ExecStart=/data/proj/jenkins/jenkins-daemon.sh start
ExecReload=/data/proj/jenkins/jenkins-daemon.sh restart
ExecStop=/data/proj/jenkins/jenkins-daemon.sh stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

c,加入到系统开机自启动服务

systemctl enable jenkins.service

d,手动启动agent服务

systemctl  start jenkins.service

e,查看命令agent服务运行状态

systemctl status jenkins.service

执行命令后可看到agent的运行状态

如果在执行启动发生错误可以通过命令查看详细错误:

journalctl -xe

f,系统重启后查看agent成功启动

[root@lw-app-08 jenkins]# ps aux |grep jenkins-agent
root      205739  0.7  0.7 7835652 122920 ?      Sl   16:22   0:10 /data/proj/jenkins/jdk/bin/java -jar agent.jar -jnlpUrl http://10.110.60.123:6060/computer/node%5F104%5F60/jenkins-agent.jnlp -secret @secret-file -workDir /data/proj/jenkins

5,systemctl 服务相关命令补充

# 重新加载服务
systemctl daemon-reload  
# 启动服务
systemctl start jenkins.service 
# 停止服务
systemctl stop jenkins.service
# 重启服务
systemctl restart jenkins.service 
# 查看服务状态
systemctl status jenkins.service
# 设置开机自动启动服务
systemctl enable jenkins.service  
# 取消开机自动启动服务
systemctl disable jenkins.service 
# 查看服务是否开机启动
systemctl is-enabled jenkins.service
# 查看已启动的服务列表
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表
systemctl --failed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NettyBoy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值