DevOps實踐集——應用運維之持續部署
|
1. 場景
持續部署:業界沒有統一明確地定義,簡單理解為將集成結果部署到不同的環境供用户使用,並且立即反饋部署結果的實踐,其中不同的環境包括:開發環境、測試環境、預發佈環境、生產環境
持續部署兩個核心要素:持續、自動化,自動化是持續的基礎
持續部署的需求場景:
注:此處只討論應用部署,不包括系統部署
2. 實踐
注:
3. 工具
3.1 工具箱
3.2 Rundeck功能
通過以上功能,Rundeck可以在任意數量的服務器上批量執行不同的任務,降低對自動化的部署、執行、維護的工作難度。
3.3 Rundeck架構
3.4 Rundeck典型使用場景
3.5 Rundeck安裝配置
1. 安裝 首先確認已經安裝了jdk
複製代碼
2.配置
在mysql數據庫創建數據庫rundeck,和對rundeck有所有權限的用户rundeckuse/rundeckpassword
修改文件/etc/rundeck/rundeck-config.properties文件:
複製代碼
啓動rundeck
複製代碼
4. 效果
5. 其他
5.1 自動化部署工具對比
自動化部署工具種類繁多,各有千秋,根據團隊實際需求和工具特性選擇適合當前階段的工具,避免過多追求新特性導致陡峭的學習曲線,避免對當前環境造成過多的侵入,在非生產環境進行充分的驗證。下面就常見的自動化部署工具進行簡單比較:
Puppet:當前的主流工具,重量級,容易上手,擴展性強,但配置複雜,對管理員要求較高,需具備一定編程能力,
Chef:功能和成熟度稍遜於Puppet,重量級,設計原則是基礎設施即代碼,專注連接開發與運維
Rundeck:輕量級,WebUI免費
SaltStack:輕量級,有Agent但不是必須使用,採用ssh協議,Web界面功能稍弱,適合運維人員使用,支持去中心化
Ansible:輕量級,採用ssh協議,WebUI收費,支持YAML/JSON,容易上手,擴展性強,注重運維,支持推拉兩種模式,擅長應用部署,任務編排
服務器規模非常大,影響文件推送或下拉效率,建議參考Twitter的部署工具Murder,其基於BitTorrent技術實現P2P下載,大大提高了文件推送或下拉效率
5.2 Ansible基本介紹
5.3 其他問題
同學們,歡迎大家留言討論,陸續還有更多的濕貨+乾貨,大家回覆越多,樓主更新越快
|
|
工具 |
開發語言 |
交互方式 |
支持OS |
有無Agent |
發佈時間 |
場景 |
備註 |
|
Puppet |
Ruby |
Web UI/CLI |
Unix/Linux/Windows |
有 |
2005年 |
基礎配置文件管理 |
配套工具:foreman |
|
Chef |
Ruby |
Web UI/CLI |
Unix/Linux/Windows |
有 |
2009年 |
基礎配置文件管理 |
|
|
Rundeck |
Java |
Web UI/CLI |
Unix/Linux/Windows |
無 |
2010年 |
代碼批量發佈 |
|
|
SaltStack |
Python |
Web UI/CLI |
Unix/Linux/Windows |
有 |
2011年 |
基礎配置文件管理 |
|
|
Ansible |
Python |
Web UI/CLI |
Linux/Windows |
無 |
2012年 |
基礎配置文件管理和命令批量操作 |
|