基礎設施即代碼(Infrastructure as Code)


Infrastructure as Code

硬件資源是服務的基礎,我們帶代碼需要部署在vm(openstack集群、ECS、aws或者google cloud),這類資源需要集中管理,是屬於我們的資源和哪資產。同時需要支持跨平台,比如阿里雲、騰訊雲、aws等。

基礎設施即代碼,這個在2014年就提出來了,這個概念不單單是自動化,自動化方面我們已經有了Salt,Puppet等,但這些還不夠。

As a best practice, infrastructure-as-code mandates that whatever work is needed to provision computing resources it must be done via code only. 作為最佳實踐,基礎設施及代碼授權所有准備計算資源所需要做的工作都可以通過代碼來完成 

計算資源包括計算、存儲、網絡、數據庫等等,這意味着我們不需要點擊去做部署,而是通過如下方式:

  1. 通過特定的格式,json或者其他編排語言來定義所需的資源
  2. 存儲在代碼控制系統
  3. pull,測試
  4. 執行代碼來部署

這類的平台比較多,比如Terraform,Chef,Puppet Ansible,CloudFormation,Salt等等。Terraform是目前比較受歡迎的,支持跨平台,當然選擇其他也是可以的。

傳統的想法是,Terraform或者cloudFormation等平台提供物理資源,然后使用ansible或者saltstack來配置和部署。但是實際上並不需要如此,ansilbe能做的,terraform也能做。

不可逆的部署

當前我們的做法是服務器和代碼分開部署,但是現在的趨勢是代碼和vm綁定在一起,或者容器中都已經包含了代碼,是當做一個整體部署下去,這樣就不會有環境的問題。

如果需要修改參數,並不需要在原有vm或docker修改,而是修改配置包,然后直接部署新的vm或docker。

這樣做的收益是只需要一份配置,不需要測試環境部署一套,開發環境配置一次,線上環境又是一種,節約人力。

如果要查看log,當然不需要登錄服務器去查看,在服務器上可以配置響應的日志組件,將日志上傳到集中的日志中心,統一管理,方便之后用elk等分析處理。aws elk部署參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM