Day05-01-jenkins进阶

Day05-01-jenkins进阶

  • 10. 案例07: 理解 案例06基于ans实现
    • 10.1 整体流程
    • 10.2 把shell改为Ansible剧本
    • 10.3 jk调用ansible全流程
    • 10.4 书写剧本
  • 11. Jenkins进阶
    • 11.1 jenkins分布式
      • 1)概述
      • 2)案例08:拆分docker功能
      • 3)创建任务并绑定到指定节点中
      • 4)运行即可
      • 5)小结
    • 11.2 rbac认证
      • 1)插件
      • 2)启用基于RBAC的认证
      • 3)小结

10. 案例07: 理解 案例06基于ans实现

10.1 整体流程

  • 开发书写代码提交代码+Dockerfile
  • jk: 拉取代码
  • jk: 构建镜像并推送到私有仓库
  • jk: 管理web,在web上拉取镜像并运行容器 (shell,改为ans实现)
  • web或lb: 进行测试.

10.2 把shell改为Ansible剧本

#vars
web_servers="172.16.1.82 "
#0.判断git_tag是否为默认
if [ "$git_tag" = "origin/master" ];thengit_tag=latest
fi
#1. 构建镜像
docker build  -t reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag} .
#2. 推送到私有仓库
#docker login -uxxx -pxxx   私有仓库地址
docker push reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}
#3. 部署web服务器
for ip in ${web_servers}
dossh root@${ip} "#0.未来可以加入判断判断端口是否占用#端口冲突手动解决.未来可以ansible实现.
#   if [ `docker ps |grep -w 80 |wc -l` -eq 1 ];then#删除占用80端口的容器
#   fidocker ps |grep -w 80 |awk '{print $NF}'|xargs docker rm -f#0.未来可以加入判断判断容器的名字是否有冲突.if [ `docker ps -a |grep -w "ngx_bird_${git_tag}" |wc -l ` -eq 1 ];thendocker rm -f ngx_bird_${git_tag}fi#启动docker run -d --name "ngx_bird_${git_tag}" \-p 80:80 --restart=always \reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}"
done
  • 需要修改的代码
#3. 部署web服务器
for ip in ${web_servers}
dossh root@${ip} "#0.未来可以加入判断判断端口是否占用#端口冲突手动解决.未来可以ansible实现.
#   if [ `docker ps |grep -w 80 |wc -l` -eq 1 ];then#删除占用80端口的容器
#   fidocker ps |grep -w 80 |awk '{print $NF}'|xargs docker rm -f#0.未来可以加入判断判断容器的名字是否有冲突.if [ `docker ps -a |grep -w "ngx_bird_${git_tag}" |wc -l ` -eq 1 ];thendocker rm -f ngx_bird_${git_tag}fi#启动docker run -d --name "ngx_bird_${git_tag}" \-p 80:80 --restart=always \reg.oldboylinux.cn:5000/oldboyedu/web:ngx_bird_${git_tag}"
done
  • 改完后 参考10.4部分

10.3 jk调用ansible全流程

  • 依赖插件:

  • 配置ansible任务

image-20240523151832000

image-20240523152248778

image-20240523152348824

[root@devops-oldboy-jenkins /server/scripts]# cat test.yml 
- hosts: webgather_facts: falsetasks:- name: testshell: hostname -I >>/tmp/test.log
[root@devops-oldboy-jenkins /server/scripts]# cat hosts 
[web]
172.16.1.82

10.4 书写剧本

- hosts: webvars:- img_name: "ngx_bird_{{ans_git_tag}}"gather_facts: falsetasks:- name: 1. 获取80端口是否冲突#过滤宿主机占用80端口的容器shell: docker ps -a |grep ':80'#存放到port变量中json形式数据 port.rc返回值register: port#用于指定这个模块什么条件下才算是报错了.#'"not found" in port.stdout' 命令的结果中如果出现not found字样比如command not found则报错.#ignore_errors: truefailed_when: '"not found" in port.stdout'- name: 1. 获取80端口是否冲突,如果有冲突则删除容器shell: docker ps -a |grep  ':80Վʘ'|awk 
'{print $NF}' |xargs docker rm -f  #当docker ps -a |grep ':80Վʘ'命令的返回值是0的
时候才会运行删除容器的操作.#port.rc Վҧ 0when: port.rc Վҧ 0- name: 2. 获取是否有重名的docker容器,如果有冲突则删除
容器shell: docker ps -a |grep -w "{{img_name}}"register: container_namefailed_when: '"not found" in 
container_name.stdout'- name: 2. 获取是否有重名的docker容器,如果有冲突则删除
容器shell: docker ps -a |grep -w "
{{img_name}}"|awk '{print $NF}' |xargs docker rm -f when: container_name.rc Վҧ 0- name: 3. 启动容器shell: docker run -d Վʔname "{{img_name}}" -p 
80:80 Վʔrestart=always 
reg.oldboylinux.cn:5000/oldboyedu/web:{{img_name}}
  • 注释版本
ansibe-playbook -i hosts test.yml -e ans_git_tag=${git_tag}
#-e ans_git_tag=${git_tag} ans_git_tag用于获取前面参数化构建的时候创建的变量git_tag
- hosts: webvars:- img_name: "ngx_bird_{{ans_git_tag}}"gather_facts: falsetasks:- name: 1. 获取80端口是否冲突#过滤宿主机占用80端口的容器shell: docker ps -a |grep ':80->'#存放到port变量中json形式数据 port.rc返回值register: port#用于指定这个模块什么条件下才算是报错了.#'"not found" in port.stdout' 命令的结果中如果出现not found字样比如command not found则报错.#ignore_errors: truefailed_when: '"not found" in port.stdout'- name: 1. 获取80端口是否冲突,如果有冲突则删除容器shell: docker ps -a |grep ':80->'|awk '{print $NF}' |xargs docker rm -f#当docker ps -a |grep ':80->'命令的返回值是0的时候才会运行删除容器的操作.#port.rc == 0when: port.rc == 0- name: 2. 获取是否有重名的docker容器,如果有冲突则删除容器shell: docker ps -a |grep -w "{{img_name}}"register: container_namefailed_when: '"not found" in container_name.stdout'- name: 2. 获取是否有重名的docker容器,如果有冲突则删除容器shell: docker ps -a |grep -w "{{img_name}}"|awk '{print $NF}' |xargs docker rm -fwhen: container_name.rc == 0- name: 3. 启动容器shell: docker run -d --name "{{img_name}}" -p 80:80 --restart=always reg.oldboylinux.cn:5000/oldboyedu/web:{{img_name}}

image-20240523155356703

image-20240523155625747

11. Jenkins进阶

  • jenkins分布式(主从master,slave 代理agent): 把jenkins工作拆分出来
  • rbac权限控制
  • pipeline(ans剧本)

11.1 jenkins分布式

1)概述

  • 背景:

    • jenkins服务器上运行maven编译,ansible(执行剧本),docker build(构建镜像)
    • jenkins慢了
  • 解决:

    • 把一些功能拆分出去
    • 运行指定任务的时候指定这个新的(jenkins)节点即可

2)案例08:拆分docker功能

  • 目标:未来我们的任务中只有有docker build相关操作就交给对应docker节点.

  • 添加节点

    • 准备节点上安装jdk/jre环境. yum install -y java-11
    • web页面添加节点.

image-20240523160906264

image-20240523161331204

image-20240523161412486

image-20240523161751560

image-20240523161959502

image-20240523162111449

3)创建任务并绑定到指定节点中

image-20240523163303656

4)运行即可

image-20240523164456991

5)小结

  • 核心来理解什么是jenkins分布式与应用场景即可
  • 使用流程:添加节点,添加任务的时候关联节点即可

11.2 rbac认证

  • 用于认证与权限控制

  • 目前jenkins的认证,用户与密码,所有用户权限一致,都是最高权限,权限混乱

  • rbac基于role(角色)的认证体系

  • 角色(role)可以理解成权限集合

    • dev-auto角色内部测试环境
    • dev角色,可以管理所有的开发job(任务)
    • ops可以管理生产环境job
  • 未来把用户或用户组与对应的role关联即可拥有相关的权限

1)插件

  • Role-based Authorization Strategy
  • Matrix Authorization Strategy Plugin

image-20240524134543913

2)启用基于RBAC的认证

  • 启动基于RBAC认证

image-20240524135024709

  • 在系统管理–>Manage and Assign Roles分配权限

  • 添加全局角色与具体job角色.

    • 全局只读.
    • 局部使用正则匹配目录和目录下jobs.

image-20240523165332602

image-20240523165448422

image-20240523165502472

image-20240523165521546

  • 访问测试

image-20240523165553570

image-20240523165629445

3)小结

  • 会使用基于rbac的认证即可.
  • 会配置即可.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 ClamAV 并进行病毒扫描

安装 ClamAV 并进行病毒扫描 以下是安装 ClamAV 并使用它进行病毒扫描的步骤: 1. 安装 ClamAV 在 Debian/Ubuntu 系统上: sudo apt update sudo apt install clamav clamav-daemon在 RHEL/CentOS 系统上: sudo yum install epel-release…

开发指南040-swagger加header

swagger可以在线生成接口文档,便于前后端沟通,而且还可以在线调用接口,方便后台调试。但是接口需要经过登录校验,部分接口还需要得到登录token,使用token识别用户身份进行后续操作。这种情况下,都需要接口增…

【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级

1. 另类加法 给定两个int A和B。编写一个函数返回AB的值,但不得使用或其他算数运算符。 测试样例: 1,2 返回:3 示例 1 输入 输出 思路1: 二进制0101和1101的相加 0 1 0 1 1 1 0 1 其实就是 不带进位的结果1000 和进位产生的1010相加 无进位加…

ssm校园志愿服务信息系统-计算机毕业设计源码97697

摘 要 随着社会的进步和信息技术的发展,越来越多的学校开始重视志愿服务工作,通过组织各种志愿服务活动,让学生更好地了解社会、服务社会。然而,在实际操作中,志愿服务的组织和管理面临着诸多问题,如志愿者…

dledger原理源码分析系列(一)-架构,核心组件和rpc组件

简介 dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的架构,核心组件;rpc组…

【pytorch16】MLP反向传播

链式法则回顾 多输出感知机的推导公式回顾 只与w相关的输出节点和输入节点有关 多层多输入感知机 扩展为多层感知机的话,意味着还有一些层(理解为隐藏层σ函数),暂且设置为 x j x_{j} xj​层 对于 x j x_{j} xj​层如果把前面的…

迅捷PDF编辑器合并PDF

迅捷PDF编辑器是一款专业的PDF编辑软件,不仅支持任意添加文本,而且可以任意编辑PDF原有内容,软件上方的工具栏中还有丰富的PDF标注、编辑功能,包括高亮、删除线、下划线这些基础的,还有规则或不规则框选、箭头、便利贴…

【护眼小知识】护眼台灯真的护眼吗?防近视台灯有效果吗?

当前,近视问题在人群中愈发普遍,据2024年的统计数据显示,我国儿童青少年的总体近视率已高达52.7%。并且近视背后潜藏着诸多眼部并发症的风险,例如视网膜脱离、白内障以及开角型青光眼等,严重的情况甚至可能引发失明。为…

PMP--知识卡片--波士顿矩阵

文章目录 记忆黑话概念作用图示 记忆 一说到波士顿就联想到波士顿龙虾,所以波士顿矩阵跟动物有关,狗,牛。 黑话 你公司的现金牛业务,正在逐渐变成瘦狗,应尽快采取收割策略;问题业务的储备太少&#xff0…

必须掌握的Linux的九大命令

ifconfig 命令用于配置和查看网络接口的参数。 ping 命令用于测试主机之间的网络连通性。 telnet用于通过Telnet协议连接到远程主机。 telnet 127.0.0.1 8000 telnet example.com telnet example.com 8080 iostat 命令用于报告 CPU 统计信息和 I/O 设备负载。 iostat&…

护眼热点:台灯护眼是真的吗?一起来看台灯的功能作用有哪些

如今近视问题日益严峻,尤为引人瞩目的是,高度近视学生群体占比已逼近10%的警戒线,且这一比例伴随着学龄的增长而悄然攀升——从幼儿园6岁孩童中那令人忧虑的1.5%,到高中阶段惊人的17.6%,每一组数据都敲响了保护儿童视力…

【Linux】静态库的制作和使用详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

代码随想录算法训练营第71天:路径算法[1]

代码随想录算法训练营第71天:路径算法 ‍ bellman_ford之单源有限最短路 卡码网:96. 城市间货物运输 III(opens new window) 【题目描述】 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市&#xff0c…

【CT】LeetCode手撕—4. 寻找两个正序数组的中位数

目录 题目1- 思路2- 实现⭐4. 寻找两个正序数组的中位数——题解思路 3- ACM 实现 题目 原题连接:4. 寻找两个正序数组的中位数 1- 思路 思路 将寻找中位数 ——> 寻找两个合并数组的第 K 大 (K代表中位数) 实现 ① 遍历两个数组 &am…

企业级监控系统Zabbix

文章目录 Zabbix介绍Zabbix架构Zabbix serverZabbix agentZabbix proxy Zabbix Server的安装Zabbix Agent的安装监控主机流程zabbix_get自定义模板和监控项实战用户登录数监控1.指定监控项命令2.重启Agent服务3.在Server上创建监控项4.测试监控项5.查看监控项图形 触发器定义触…

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——4.预后相关外泌体基因确定单因素cox回归(2)

内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的…

【若依】关闭当前标签页并跳转路由到其他页面

使用场景如:当在新增/编辑路由页面提交成功后,需要关闭当前页,并跳转回列表页。 实现代码: this.$store.dispatch("tagsView/delView", this.$route); //关闭当前页 this.$router.replace({ path: "/xxx/xxx"…

【经验总结】Springboot打印指定类的日志到指定文件中

原文地址:https://www.cnblogs.com/zeng1994/p/f9bff238b13a0bf8fb8bf88c41db7a34.html 以下内容已经过实践,勘误,总结 环境:Springboot2.5.2 公司有个项目,需要和几个第三方系统对接。这种项目,日志一定要…

香橙派 AIpro 根据心情生成专属音乐

香橙派 AIpro 根据心情生成专属音乐 一、OrangePi AI pro 开发版参数介绍1.1 接口简介1.2 OrangePi AI pro 的Linux系统功能适配情况1.3 开发板开机1.4 远程连接到 OrangePi AIpro 二、开发环境搭建2.1 创建环境、代码部署文件夹2.2 安装 miniconda2.3 为 miniconda 更新国内源…

生态系统NPP及碳源、碳汇模拟技术教程

原文链接:生态系统NPP及碳源、碳汇模拟技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608293&idx3&sn2604c5c4e061b4f15bb8aa81cf6dadd1&chksmfa826602cdf5ef145c4d170bed2e803cd71266626d6a6818c167e8af0da93557c1288da21a71&a…