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.pswp.cn/diannao/41115.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41115.shtml
英文地址,請注明出處:http://en.pswp.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…