背景
我现在已经在一台服务器上部署了jenkins和gitlab,现在有一个场景是需要在服务器上再部署一个zabbix,需要通过jenkins加上gitlab部署,并且要求zabbix是通过docker部署的
前提条件
jenkins、gitlab已完成部署并能正常访问,服务器docker能够正常使用
部署流程
一、准备Zabbix的Docker部署文件
1、创建Git仓库:
在GitLab上创建一个新的仓库,比如命名为zabbix-docker,用来存放Zabbix的Docker部署文件。
mkdir zabbix_docker
cd zabbix_docker
git init
git clone http://{git_ip}:{端口}/root/zabbix_docker.git
#输入git用户名/密码拉取文件,这里目前是空的,正常拉取即可
2、编写Dockerfile:
如果你打算自定义Zabbix镜像,可以在仓库中添加一个Dockerfile。不过,为了简单起见,我们直接使用官方的Zabbix Docker镜像。
3、编写docker-compose.yml:
在仓库根目录下创建docker-compose.yml文件,内容大致如下:
vim docker-compose.yml
version: '3'
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
environment:
DB_SERVER_HOST: "mysql-server"
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "your_password"
ports:
- "10051:10051"
mysql-server:
image: mysql:5.7
environment:
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "your_password"
MYSQL_ROOT_PASSWORD: "your_root_password"
volumes:
- zabbix-mysql:/var/lib/mysql
volumes:
zabbix-mysql:
driver: local
二、配置Jenkins
1、安装插件:
确保Jenkins安装了GitLab插件和Docker插件。
- 首先,使用你的账号登录Jenkins的Web界面,在Jenkins的首页上,找到“系统管理”或“Manage Jenkins”,点击进入。
- 在系统管理页面,找到“插件管理”或“Manage Plugins”,点击进入。
- 在插件管理页面,切换到“可用”或“Available”标签页,这里列出了所有可以安装的插件。
- 在页面顶部的搜索框中,分别输入“GitLab”和“Docker”来搜索这两个插件。
- 对于GitLab插件,你可能会看到“GitLab Plugin”这样的结果,这就是我们需要的。
- 对于Docker插件,可能会有几个与Docker相关的插件,但通常你需要的是“Docker Pipeline”插件,它允许你在Jenkinsfile中定义Docker相关的操作。
- 找到这些插件后,勾选它们旁边的复选框,然后点击页面底部或顶部的“立即安装”、“Install without restart”或“Download now and install after restart”。
- 安装插件可能需要一些时间。安装完成后,根据提示重启Jenkins(如果需要)。
2、创建新的Jenkins任务:
为了部署Zabbix,你需要在Jenkins中创建一个新的任务。
- 返回Jenkins首页,点击“新建任务”或“Create a new job”。
- 输入任务名称:在“任务名称”或“Enter an item name”处输入你的项目名称,例如“Deploy_Zabbix”。
- 选择任务类型:选择一个适合的任务类型,通常对于这种情况,你可以选择“自由风格软件项目”或“Freestyle project”。
- 点击“确定”或“OK” 创建任务。
3、配置GitLab源:
在任务配置中,设置GitLab仓库的URL和认证信息,以便Jenkins能够从GitLab拉取Zabbix的部署文件。
- 在任务配置页面,找到“源码管理”或“Source Code Management”部分,选择“Git”。
- 填写仓库URL:在“Repository URL”处填写你的GitLab仓库的URL。
- 填写凭据:如果你的GitLab仓库需要认证,点击“添加”或“Add”按钮,选择“Jenkins”来添加凭据(用户名和密码或者私钥)。
可能出现的问题:
首先需要确认选择的用户密码是不是gitlab拉取到的,其次需要确认jenkins安装完插件后是否正常重启。
这个HTTP ERROR 403 No valid crumb was included in the request错误是Jenkins的防跨站请求伪造(CSRF)保护机制导致的。当你尝试提交表单时,Jenkins会期望一个有效的“crumb”用于验证请求,这个错误通常发生在Jenkins的“crumb”验证没有正确配置或者客户端没有正确提交“crumb”。
解决这个问题的方法通常包括:
禁用CSRF保护(不推荐):
进入Jenkins系统配置(Manage Jenkins -> Configure Global Security)。
取消选中“防止跨站点请求伪造”或类似的选项。
保存设置。
请注意,禁用CSRF保护会降低Jenkins的安全性,因此这不是一个推荐的解决方案。
更新Jenkins到最新版本:
有时候,这个问题是由于Jenkins的一个已知问题导致的,更新到最新版本可能可以解决。
确保Jenkins URL配置正确:
在系统配置中检查Jenkins的根URL设置是否正确。
清除浏览器Cookies和缓存:
有时候,清除浏览器的Cookies和缓存可以解决这个问题。
使用API Token代替密码:
在Jenkins中为你的用户生成API Token,并在克隆Git仓库时使用用户名和API Token代替用户名和密码。
通过脚本直接获取Crumb并使用:
可以通过编写脚本从Jenkins API获取crumb,并在之后的请求中使用这个crumb。
重新登录:
有时候,简单的重新登录到Jenkins可以刷新你的session和crumb。
检查代理或网络设置:
如果你是通过代理服务器或有特殊网络配置访问Jenkins,确保代理或网络设置不会阻止crumb的传递。
从安全的角度出发,建议不要禁用CSRF保护。你可以尝试其它的方法来解决这个问题。如果你不确定如何操作,可以联系你的系统管理员协助处理。
4、添加构建步骤:
- 首先,在Jenkins的界面上找到你刚刚创建的任务,进入该任务的页面。
- 在任务页面上,点击“配置”或“Configure”按钮以进入任务的配置页面。
- 在配置页面中,找到“构建”或“Build”这一部分。在这一部分,你可以添加不同类型的构建步骤。
- 点击“添加构建步骤”(“Add build step”)后,在下拉菜单中选择“执行Shell”(“Execute shell”)或者类似的命令来添加一个Shell脚本执行步骤。
在构建步骤中,添加Shell脚本来执行Docker部署,脚本内容大致如下:
#!/bin/bash
cd /path/to/your/zabbix-docker
docker-compose down
docker-compose up -d
注意替换/path/to/your/zabbix-docker为你的实际路径。
- 编辑完成后,记得点击页面底部的“保存”(“Save”)按钮保存你的配置。
- 保存配置后,回到任务页面,点击“立即构建”(“Build now”),Jenkins就会根据你的脚本来执行构建任务。
三、配置GitLab与Jenkins的集成
1、Webhook:
在GitLab项目设置中,找到Webhooks部分,添加一个新的Webhook,URL设置为Jenkins任务的URL,这样每次GitLab上的代码更新都会触发Jenkins任务自动运行。
四、测试部署
1、推送更新:
向GitLab仓库推送任何更新,比如修改docker-compose.yml文件。
2、观察Jenkins:
推送更新后,Jenkins任务应自动运行,开始部署Zabbix。
3、验证Zabbix部署:
Jenkins任务完成后,访问Zabbix的Web界面,检查是否部署成功。