Linux——Jenkins实战(Gitlab触发、Ansible部署)

1. 基于Gitlab触发Jenkins

- SCM 触发

server2:gitlab
server3:jenkins
启用gitlab,准备demo项目,将jenkins节点的ssh公钥上传至gitlab

在这里插入图片描述进入jenkins,添加Gitlab插件 创建freestyle项目
在这里插入图片描述
在这里插入图片描述

关联gitlab项目地址至jenkins,并上传server3的ssh私钥至jenkins
在这里插入图片描述
在这里插入图片描述构建SCM触发,间隔为一分钟,执行shell命令,此命令在jenkins用户的WORKSPACE下执行
在这里插入图片描述
手动构建
在这里插入图片描述
当代码库没有变更的时候,执行不变更

在这里插入图片描述

- PUSH 事件触发

将SCM触发修改为 PUSH事件触发
在这里插入图片描述
在高级设置中生成token
在这里插入图片描述

在Gitlab设置允许webhook外发请求
在这里插入图片描述在demo项目设置的webhook中填写jenkins项目的地址以及生成的token
在这里插入图片描述
保存demo项目设置,保存Jenkins项目设置。

  • 选择push event测试

在这里插入图片描述成功触发在这里插入图片描述- git推送测试
在server2上修改demo项目文件并push至Gitlab,测试是否触发事件

echo This is a push event test! > index.html #变更文件
git commit -a -m "v1"
git push origin main #推送

在这里插入图片描述
成功触发构建时间,获取到Git更新信息
在这里插入图片描述

在这里插入图片描述

2. 基于Ansible部署交付任务

实验环境

需要三台主机,一台安装已经安装Jenkins,git以及Ansible的 server3,其余两台server4 server5,用于ansible部署httpd服务。
另需要一台主机rhel安装git用于编写部署文件以及推送至gitee(可在上述3台主机中完成)。

git 项目部署

在这里插入图片描述将更新git代码的主机公钥上传至gitee用于免密认证

ssh-keygen
cat ~/.ssh/id_rsa.pub

在这里插入图片描述在此台主机上克隆此项目,并且与gitee仓库关联
在这里插入图片描述

git clone git@gitee.com:adolf001/playbook.git #克隆
cd playbook
git remote add origin git@gitee.com:adolf001/playbook.git #关联
git remote -v #查看

在这里插入图片描述

准备ansible依赖

在这里插入图片描述

  • ansible 主配置文件
vim ansible.cfg
[defaults]
command_warnings=False
remote_user=devops  #登陆至节点部署时使用 使用devops用户 节点主机需要拥有devops用户
[privilege_escalation]
become=True
become_method=sudo #节点主机devops用户需要有sudo权限
become_user=root
become_ask_pass=False
  • playbook文件
vim playbook.yaml
---
- hosts: all
  tasks: 
  - name: install apache
    yum:
      name: httpd
      state: present
  - name: configure apache
    template:
      src: httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify: restart apache
  - name: start apache
    service:
       name: httpd
       enabled: yes
       state: started
  handlers:
  - name: restart apache
    service:
      name: httpd
      state: restarted
  • http conf 模板
    在默认httpd文件的基础上根据节点不同部署不同的端口,需要添加j2模板的变量
cp /etc/httpd/conf/httpd.conf http.conf.j2
vim http.conf.j2
45 Listen {{ http_port }}
  • invertory 变量目录
    包含j2模板需要调用的变量,根据主机不同部署不同端口,server3上需要有两个主机的解析。
mkdir inventory
echo server5 http_port=8080 > test 
echo server4 http_port=80 > prod
  • 上传源码文件至gitee
git add .
git commit -m “v3”
git push origin master

在这里插入图片描述在gitee查看
在这里插入图片描述

配置jenkins

在jinkens新建freestyle项目
在这里插入图片描述选中git管理,添加giee中托管的项目
在这里插入图片描述

将server3即jenkins主机的私钥上传至jenkins,公钥上传至gitee
在这里插入图片描述

ssh-keygen
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa

在这里插入图片描述选择参数化构建
在这里插入图片描述构建执行shell

cd $WORKSPACE
ansible-playbook -i inventory/$deploy playbook.yaml

在这里插入图片描述保存退出

配置部署环境

当使用jenkins部署时,在master节点上以jenkins用户的身份远程登陆至server4 5 的devops用户来执行部署命令。
因此server3的jenkins用户需要免密登陆至server4 5 的devops用户,并且devops用户需要sudo权限。
首先在server4 5 上添加devops用户并修改密码

[root@server4 ~]# useradd devops
[root@server4 ~]# echo westos | passwd --stdin devops 
[root@server5 ~]# useradd devops
[root@server5 ~]# echo westos | passwd --stdin devops 

在这里插入图片描述修改配置devops用户的sudo权限

[root@server4 ~]# visudo
[root@server5 ~]# visudo

devops  ALL=(ALL)       NOPASSWD: ALL

在这里插入图片描述

在server3上,给jenkins用户添加可用的shell

[root@server3 ansible]# usermod -s /bin/bash jenkins 
[root@server3 ansible]# su - jenkins

配置ssh免密

-bash-4.2$ ssh-keygen
-bash-4.2$ ssh-copy-id devops@server4
-bash-4.2$ ssh-copy-id devops@server5

测试
在这里插入图片描述

手动触发jenkins

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server4 5 上查看端口,部署成功
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值