ansible+gitlab+Jenkins實現持續整合
阿新 • • 發佈:2018-11-30
ansible簡介:
一、ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
二、ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。主要包括:
(1)、連線外掛connection plugins:負責和被監控端實現通訊;
(2)、host inventory:指定操作的主機,是一個配置檔案裡面定義監控的主機;
(3)、各種模組核心模組、command模組、自定義模組;
(4)、藉助於外掛完成記錄日誌郵件等功能;
(5)、playbook:劇本執行多個任務時,非必需可以讓節點一次性執行多個任務。
gitlab簡介:
GitLab 是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。
GitLab是由GitLabInc.開發,使用MIT許可證的基於網路的Git倉庫管理工具,且具有wiki和issue跟蹤功能。使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。
GitLab由烏克蘭程式設計師DmitriyZaporozhets和ValerySizov開發,它由Ruby寫成。後來,一些部分用Go語言重寫。截止2018年5月,該公司約有290名團隊成員,以及2000多名開源貢獻者。GitLab被IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX等組織使用。
Jenkins簡介:
Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。
Jenkins功能包括:
1、持續的軟體版本釋出/測試專案。
2、監控外部呼叫執行的工作。
ansible+Jenkins+gitlab實現過程如圖:
首先在gitlib上建立專案,建立完成後Dev拉取專案目錄在該目錄下編寫程式碼,然後提交程式碼到gitlab;使用ansible建立playboo上傳至gitlab中,使用Jenkins操作gitlab庫中的playbook完成專案的測試、部署。
在整個過程中Jenkins是沒有對web伺服器有直接的操作,gitlib起到一個儲存的作用,所有的工作由Jenkins操控ansible完成,所以對節點的管理任由ansible完成。