IaC,DevOps的必要支撐
基礎(chǔ)設(shè)施即代碼(IaC)的核心,在于以代碼形式替代手動(dòng)流程,高效對(duì)基礎(chǔ)設(shè)施進(jìn)行管理與配置。使用IaC,就可以創(chuàng)建包含基礎(chǔ)設(shè)施規(guī)范的配置文件,極大簡(jiǎn)化配置的編輯與分發(fā)過(guò)程,同時(shí)確保每一次都能提供完全相同的穩(wěn)定運(yùn)營(yíng)環(huán)境。通過(guò)編纂并記錄配置規(guī)范,IaC還將幫助企業(yè)管理配置選項(xiàng)、避免一切未經(jīng)記錄的臨時(shí)配置變更。
選擇基礎(chǔ)設(shè)施即代碼部署方法,還意味著企業(yè)可以將自己的基礎(chǔ)設(shè)施劃分為多個(gè)模塊化組件,而后以自動(dòng)化方式靈活拼合各具體組件。IaC提供的基礎(chǔ)設(shè)施配置自動(dòng)化功能,可幫助開(kāi)發(fā)者擺脫對(duì)服務(wù)器、操作系統(tǒng)、存儲(chǔ)及其他基礎(chǔ)設(shè)施組件的手動(dòng)配置及管理,極大提升應(yīng)用程序的開(kāi)發(fā)與部署效率。
IaC的聲明式與命令式實(shí)現(xiàn)方法
IaC的實(shí)現(xiàn)方法分為兩種——聲明式與命令式。
聲明式方法意在明確定義系統(tǒng)的預(yù)期狀態(tài),包括需要哪些資源、各資源應(yīng)具備何種屬性,再由IaC工具據(jù)此做出配置。聲明式方法還能為系統(tǒng)對(duì)象保留一份當(dāng)前狀態(tài)列表,顯著降低基礎(chǔ)設(shè)施的關(guān)停管理難度。與之對(duì)應(yīng),命令式方法則強(qiáng)調(diào)達(dá)成所需配置時(shí)執(zhí)行的特定命令,再以正確的順序依次執(zhí)行這些命令。
多數(shù)IaC工具選擇使用聲明式方法,并自動(dòng)提供必要的基礎(chǔ)設(shè)施配置方案。如果開(kāi)發(fā)者對(duì)預(yù)期狀態(tài)做出修改,聲明式IaC工具將自動(dòng)為應(yīng)用變更內(nèi)容。另一方面,命令式工具則要求開(kāi)發(fā)者清晰理解要如何操作并應(yīng)用這些變更。
大部分IaC工具雖然同時(shí)支持這兩種方法,但在具體實(shí)現(xiàn)上往往會(huì)傾向于其中一種。
IaC的優(yōu)勢(shì)
基礎(chǔ)設(shè)施的配置工作歷來(lái)是個(gè)極度耗時(shí)且成本高昂的手動(dòng)流程。如今的基礎(chǔ)設(shè)施管理已經(jīng)由數(shù)據(jù)中心物理硬件轉(zhuǎn)變?yōu)樘摂M化、容器與云計(jì)算形式,因此操作方式也該做出對(duì)應(yīng)調(diào)整。
隨著云計(jì)算的發(fā)展,基礎(chǔ)設(shè)施組件的數(shù)量不斷增加,每天都有更多應(yīng)用程序被發(fā)布至生產(chǎn)環(huán)境當(dāng)中,同時(shí)要求對(duì)基礎(chǔ)設(shè)施進(jìn)行頻繁啟動(dòng)、擴(kuò)展與關(guān)閉。如果沒(méi)有適當(dāng)?shù)腎aC實(shí)踐,大規(guī)模現(xiàn)代基礎(chǔ)設(shè)施帶來(lái)的管理難題勢(shì)必愈發(fā)令人頭痛。
IaC能夠幫助企業(yè)妥善管理IT基礎(chǔ)設(shè)施需求、提高一致性、同時(shí)降低錯(cuò)誤數(shù)量及手動(dòng)配置需求?偟膩(lái)看,IaC的優(yōu)勢(shì)在于降低成本、提高部署速度、減少錯(cuò)誤、提高基礎(chǔ)設(shè)施一致性、消除配置漂移。
除了常見(jiàn)的服務(wù)器自動(dòng)化與配置管理工具,我們還可以選擇專(zhuān)門(mén)用于IaC的解決方案。
下面來(lái)看幾種流行的方案選項(xiàng):
• Chef
• Puppet
• Red Hat Ansible Automation Platform
• Saltstack
• Terraform
• AWS CloudFormation
IaC對(duì)于DevOps有何重要意義?
IaC是實(shí)施DevOps及持續(xù)集成/持續(xù)交付(CI/CD)的重要組成部分。IaC幫助開(kāi)發(fā)人員分擔(dān)掉大部分配置工作,確保開(kāi)發(fā)者只需執(zhí)行腳本即可建立起就緒待用的基礎(chǔ)設(shè)施。如此一來(lái),應(yīng)用程序部署工作不會(huì)因基礎(chǔ)設(shè)施搭建周期而陷入停頓,系統(tǒng)管理員也不必承擔(dān)費(fèi)心耗時(shí)的手動(dòng)管理流程。
CI/CD的實(shí)現(xiàn),則依賴(lài)于整個(gè)應(yīng)用程序生命周期中涵蓋集成、測(cè)試、交付及部署的持續(xù)自動(dòng)化與持續(xù)監(jiān)控機(jī)制。實(shí)現(xiàn)環(huán)境自動(dòng)化的前提,在于環(huán)境一致化。如果開(kāi)發(fā)團(tuán)隊(duì)以一種方式部署應(yīng)用程序或配置環(huán)境,但運(yùn)營(yíng)團(tuán)隊(duì)的部署及配置方式完全不同時(shí),應(yīng)用程序的自動(dòng)化部署將無(wú)從談起。
以DevOps方法為開(kāi)發(fā)及運(yùn)營(yíng)團(tuán)隊(duì)提供協(xié)調(diào)支持,能夠極大改善流程中的錯(cuò)誤、手動(dòng)部署與一致性沖突等問(wèn)題。IaC可保證兩支團(tuán)隊(duì)使用完全相同的應(yīng)用程序部署方式與DevOps協(xié)同策略,真正將開(kāi)發(fā)與運(yùn)營(yíng)工作融合起來(lái)。各個(gè)環(huán)境均應(yīng)使用相同的部署流程,其中包括實(shí)際生產(chǎn)環(huán)境。IaC則能保證每次生成的環(huán)境都完全相同。IaC還能徹底消除了無(wú)法自動(dòng)復(fù)制的特定配置維護(hù)單一部署環(huán)境的情況,確保整個(gè)生產(chǎn)環(huán)境乃至運(yùn)營(yíng)體系始終保持一致。
DevOps最佳實(shí)踐同樣適用于IaC中的基礎(chǔ)設(shè)施;A(chǔ)設(shè)施可以使用軟件開(kāi)發(fā)期間的相同CI/CD管道,并對(duì)基礎(chǔ)設(shè)施代碼進(jìn)行相同的測(cè)試與版本控制。
紅帽助力實(shí)現(xiàn)自動(dòng)化
在企業(yè)之內(nèi)全面推行自動(dòng)化方法不僅有助于提升IT流程效率,還能將自動(dòng)化元素引入整個(gè)技術(shù)、團(tuán)隊(duì)及組織結(jié)構(gòu)。
Red Hat Ansible Automation Platform 包含企業(yè)內(nèi)部自動(dòng)化所需要的全部工具,例如playbook、可視化儀表板及分析工具等等。以YAML編寫(xiě)而成的Ansible Playbooks可描述系統(tǒng)所需要的狀態(tài),具體狀態(tài)信息通常保存在源代碼控制之內(nèi)。Red Hat Ansible Automation Platform則負(fù)責(zé)讓系統(tǒng)達(dá)到所需狀態(tài),無(wú)論其當(dāng)前狀態(tài)如何。
Ansible Automation Platform還能讓安裝、升級(jí)與日常管理等操作全面實(shí)現(xiàn)可重復(fù)性與高可靠性。
此外,Red Hat Ansible Automation Platform還在Forrester Research評(píng)選的2020年第三季度Forrester Wave™: 基礎(chǔ)設(shè)施自動(dòng)化平臺(tái)中獲得“領(lǐng)軍級(jí)”評(píng)價(jià)。在強(qiáng)有力的自動(dòng)化解決方案的支持下,企業(yè)得以加快應(yīng)用程序與服務(wù)的部署速度、提升IT基礎(chǔ)設(shè)施管理效率,最終全面增強(qiáng)應(yīng)用程序的開(kāi)發(fā)能力。

