運維自動化的發展歷程
1、自動化運維應用場景
1、1云計算運維工程師核心職能



運維相關的工具

Podman是用來替代docker的工具

1.2 運維職業的發展路線
目標::一切皆自動化

1.3 企業實際應用場景分析
開發工程師—測驗工程師----運維工程師
白核測驗工程師::心功能實作不,還要關心其他
黑核測驗工程師::不關心其他,僅僅關心功能實作不

1.3.1 Dev開發環境
使用者:程式員
功能:程式員個人的辦公電腦或專案的開發測驗環境,部署開發軟體,測驗個人或專案整體的BUG的環境
管理者:程式員
1.3.2 測驗環境
使用者:QA測驗工程師
功能:測驗經過Dev環境測驗通過的軟體的功能和性能,判斷是否達到專案的預期目標,生成測驗報告
管理者:運維
說明:測驗環境往往有多套,測驗環境滿足測驗功能即可,不宜過多
1、測驗人員希望測驗環境有多套,公司產品多產品線并發,即多個版本,意味著多個版本同步測驗,
2、通過測驗環境有多少套和產品線數量保持一致
1.3.3 預發布環境
使用者:運維
功能:使用和生成環境一樣的資料庫,快取服務等配置,測驗是否正常
1.3.4 發布環境
包括代碼發布機,有些公司為堡壘機(安全屏障)
使用者:運維
功能:發布代碼至生產環境
管理者:運維(有經驗者)
發布機:往往需要兩臺(主備)
1.3.5 生成環境
使用者:運維,少數情況開發權限給核心開發人員,極少數公司將權限完全開放給開發人員并其維護
功能:多用戶提供公司產品的服務
管理者:只能是運維
生產環境服務器數量:一般比較多,且應用非常重要,往往需要自動工具協助部署配置應用
1.3.6 灰度環境(金絲雀發布)
屬于生產環境的一部分
使用者:運維
功能:在全量發布代碼前將代碼的功能面向少量精準用戶發布的環境,可基于主機或用戶執行灰度發布
案例:共100臺生產服務器,先發布其中的10臺服務器,這10臺服務器就是灰度發布服務器
管理者:運維
灰度環境:往往該版本功能變更比較大,為了保險起見特意先讓一部分用戶優先體驗改功能,待這部分用戶使用沒有重大問題的時候,在全量發布至所有服務器
1.4 程式發布
程式發布需求:
不能導致系統故障或造成系統完全不可用
不能影響用戶體驗
預發布驗證:
新版本的代碼先發布至服務器(跟線上環境配置完全相同,只是為接入到調度器)
灰度發布:
基于主機,用戶,業務
發布路徑:
/webapp/tuangou ----- 軟鏈接
/webapp/tuangou-1.1 ----老版本
/webapp/tuangou-1.2 ----新版本
發布程序
1、在調度器上下線一批主機(標記為maintenance狀態)
2、關閉服務
3、部署新版本的應用程式
4、啟動服務
5、在調度器上啟動這一批服務器
自動化灰度發布
- 腳本
- 發布平臺
1.5 自動化運維應用環境
- 檔案傳輸
- 應用部署
- 配置管理
- 任務流編排
1.6 常用自動化運維工具
- Ansible : python,Agentless,中小型應用環境
- Saltstack:python,一般需部署agent,執行效率更高
- Puppet:ruby,功能強大,配置復雜,重型,適合大型環境
- Fabric:python,agentless
- Chef:ruby,國內應用少
- Cfengine
- func
同類自動化工具GitHub關注程度(2016-7-10)

2、Ansible 介紹和架構
公司計劃在年底做一次大型市場促銷活動,全面沖刺下交易額,為明年的上市做準備,公司要求各業務組,對年底大促做準備,運維部要求所有業務容量進行三倍擴容,并搭建出多套環境可以供開發和測驗人員做測驗,運維老大為了年底所有表現,要求運維部門同學盡快實作,當你接到這個任務時,有沒有更快的解決方案,
2.1 Ansible 發展史

2.2 Ansible 特性
- 模塊化:呼叫特定的模塊,完成特定任務
- Paramiko (python對ssh的實作),PyYAML,Jinja2(模板語言)三個關鍵模塊
- 支持自定義模塊,可使用任何編程語言寫模塊
- 基于Python語言實作
- 部署簡單,基于python和SSH(默認已安裝),agentless,無需代理不依賴PKI(無需ssl)
- 安全,基于OpenSSH
- 冪等性:一個任務執行1遍和執行n遍效果一樣,不因重復執行帶來意外情況
- 支持playbook編排任務,YAML格式,編排任務,支持豐富的資料結構
- 較強大的多層解決方案role
2.3 Ansible架構
2.3.1 Ansible 組成

組合INVENTOPY,API,MODULES、PLUGINS的綠框,可以理解為是ansible命令工具,其為核心執行工具
- INVENTOPY:Ansible管理主機的清單/etc/ansible/hosts
- MODULES:ansible執行命令的功能模塊,多數為內置核心模塊,也可以自定義
- PLUGINS:模塊功能的補充,如連接型別插件,回圈插件,變數插件,過濾插件等,該功能不常用
- API:供第三方程式呼叫的應用程式編程介面
2.3.2 Ansible 命令執行來源
- USER 普通用戶,即SYSTEM ADMINISTRATOR
- PLAYBOOKS:任務劇本(任務集),編排定義Ansible任務集的組態檔,由Ansible順序依次執行,通常是JSON格式的YML檔案
- CMDB (配置管理資料庫) API 呼叫
- PUBLIC/PRIVATE CLOUD API呼叫
- USER-> Ansible Playbook ->Ansible
2.3.3 注意事項
- 執行ansible主機一般為主控端,中控,master或堡壘機
- 主控端Python版本需要2.6或以上
- 被控端Python版本小于2.4需要安裝libselinux-python
- Windows不能做為主控端
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293276.html
標籤:其他
上一篇:redis(七)、運維配置注意
