四虎影视精品永久在线观看,中文字幕婷婷日韩欧美亚洲 ,婷婷成人综合激情在线视频播放,中文在线а√天堂,伊人久久大香线蕉成人

開源實踐聯(lián)盟通信 2021年 07月25日

基礎(chǔ)設(shè)施即代碼:從手工到自動化的躍遷

文/鄒大斌
為了幫助大家了解IaC,IaC到底有哪些好處,它和時下流行的DevOps、AIOps是否有關(guān)系?我們邀請了專家景顯強(qiáng)對此相關(guān)話題進(jìn)行了解答。

IT系統(tǒng)運(yùn)行離不開服務(wù)器、網(wǎng)絡(luò)和存儲這些底層硬件基礎(chǔ)設(shè)施的支持,因此需要對這些基礎(chǔ)設(shè)施進(jìn)行管理,比如,設(shè)備的啟停、網(wǎng)絡(luò)的配置、軟件的安裝和升級等,這些工作復(fù)雜而且瑣碎,一旦出錯,很可能導(dǎo)致其支持的各種業(yè)務(wù)系統(tǒng)無法正常運(yùn)行。

很長時間以來,基礎(chǔ)設(shè)施這些管理工作依賴于管理員通過命令行或其他界面進(jìn)行操作。隨著IT設(shè)備數(shù)量的不斷增加,IT系統(tǒng)越來越復(fù)雜,變化越來越頻繁,停止和啟動它們的頻率也越來越高。如果繼續(xù)采用手動,意味著管理員可能每天要人工登錄和修改數(shù)百次,這是不現(xiàn)實的,根本適應(yīng)不了大規(guī)模部署的要求。特別是當(dāng)單體數(shù)據(jù)中心規(guī)模從幾十臺增加到上萬臺、10萬臺甚至更多之后,以自動化替代傳統(tǒng)手工方式成為必然。這正是基礎(chǔ)設(shè)施即代碼(Infrastructure as Code,IaC)出現(xiàn)最重要的原因。當(dāng)然,IaC不止是以自動化替代手工提高了工作效率,它還帶來了環(huán)境一致性、可復(fù)制性以及可追溯性等諸多優(yōu)點(diǎn)。可以說,IaC開啟了基礎(chǔ)設(shè)施管理的一個新世界,它讓基礎(chǔ)設(shè)施的管理也像軟件開發(fā)一樣,是基礎(chǔ)設(shè)施管理和運(yùn)維從手工到自動化最終到無人化這一進(jìn)化路徑上的一次重要躍遷。

為了幫助大家了解IaC,IaC到底有哪些好處,它和時下流行的DevOps、AIOps是否有關(guān)系?我們邀請了專家景顯強(qiáng)對此相關(guān)話題進(jìn)行了解答。

景顯強(qiáng)是紅帽資深解決方案架構(gòu)師、RHCA認(rèn)證。曾就職華為、SUSE等企業(yè),有多年操作系統(tǒng)研發(fā)及運(yùn)維經(jīng)驗,同時在數(shù)據(jù)中心運(yùn)維方面有多年經(jīng)驗。目前,景顯強(qiáng)在紅帽軟件(北京)有限公司負(fù)責(zé)紅帽軟件的相關(guān)產(chǎn)品及解決方案,主要針對Linux操作系統(tǒng)、分布式存儲、IaaS云、PaaS云、自動化運(yùn)維等領(lǐng)域提供技術(shù)和方案建設(shè)規(guī)劃,為企業(yè)提供以紅帽產(chǎn)品為中心的解決方案建設(shè)指導(dǎo),幫助企業(yè)實現(xiàn)數(shù)字化轉(zhuǎn)型。

以下為本次訪談內(nèi)容。

紅帽資深解決方案架構(gòu)師景顯強(qiáng)

1. 何謂基礎(chǔ)設(shè)施即代碼(IaC),為什么會提出這個概念?它要解決什么問題?

基礎(chǔ)設(shè)施即代碼 (IaC) 是通過代碼的方式來管理和配置基礎(chǔ)設(shè)施,取代以往的手工操作基礎(chǔ)設(shè)施。提出這個概念的靈感來自軟件開發(fā)的最佳實踐經(jīng)驗。傳統(tǒng)的基礎(chǔ)設(shè)施管理方法是人工的手動處理模式,不僅僅效率低下,而且還有很多人為操作的風(fēng)險,比如誤操作。同時,對基礎(chǔ)設(shè)施的配置更改需要文檔記錄,如果沒有做好配置更改記錄,可能帶來另外一些重復(fù)性操作的風(fēng)險。另外,隨著虛擬化和云平臺的引入,企業(yè)的基礎(chǔ)設(shè)施變得很復(fù)雜,也引入了很多工具和平臺,雖然能在基礎(chǔ)設(shè)施的提供和管理上增加部分效率,但是對于環(huán)境的一致性保證以及在數(shù)分鐘內(nèi)實現(xiàn)特定場景下基礎(chǔ)設(shè)施就緒是很難實現(xiàn)的。因此需要一種全新的管理方法,而IaC借助了軟件開發(fā)中的代碼管理經(jīng)驗,通過代碼描述基礎(chǔ)設(shè)施的配置及變更,再執(zhí)行代碼完成配置和變更。

只要我們編寫好一套代碼來描述對基礎(chǔ)設(shè)施的操作,便可以對這些代碼進(jìn)行管理和維護(hù),比如將其存放在代碼版本管理工具git中,這樣只要需要用到這段代碼的時候,就從git中將其check out出來使用。如果需要對這段代碼進(jìn)行更改,git也會記錄代碼更改的所有記錄,實現(xiàn)了版本控制。通過這種方式來管理基礎(chǔ)設(shè)施,能保證部署的環(huán)境一致性,實現(xiàn)了同一代碼部署多套相同環(huán)境的要求。

IaC主要解決的問題就是基礎(chǔ)設(shè)施提供的效率和一致性問題。我們可以將基礎(chǔ)設(shè)施作為代碼來部署,可以實現(xiàn)版本跟蹤,也能在很短的時間內(nèi)提供一套全新的相同環(huán)境。如果我們的操作需求很復(fù)雜,可以將基礎(chǔ)設(shè)施劃分為模塊,然后對每個模塊分別實現(xiàn)代碼方式描述,在需要使用的時候,可以通過自動化以不同方式組合這些模塊,進(jìn)而實現(xiàn)復(fù)雜場景的快速響應(yīng)。

2. IaC的主要客戶是哪些,它能帶來哪些好處?

對于擁有大量IT基礎(chǔ)設(shè)施環(huán)境的企業(yè)都可以考慮IaC,比如擁有大量服務(wù)器、存儲、網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)、虛擬化平臺、私有云平臺、公有云平臺、容器云平臺甚至是混合云架構(gòu)下的混合平臺的企業(yè)都應(yīng)該考慮IaC,尤其是在這些基礎(chǔ)設(shè)施上有頻繁操作需求的,比如對變更、新業(yè)務(wù)系統(tǒng)上線、基礎(chǔ)環(huán)境制備要求更高響應(yīng)速度的企業(yè)更應(yīng)該考慮使用IaC。

使用IaC能帶來以下幾方面的好處:

1) 提高開發(fā)速度。開發(fā)業(yè)務(wù)代碼需要依賴基礎(chǔ)設(shè)施環(huán)境,如果基礎(chǔ)設(shè)施能快速就位,快速響應(yīng)變更,并行執(zhí)行任務(wù),就會使開發(fā)效率得到提高。

2) 保證環(huán)境一致性。使用相同的代碼部署出來的環(huán)境一定是相同的,對所納管的環(huán)境變更也一定是一致的。

3) 自動化的處理。當(dāng)代碼借助自動化工具開始執(zhí)行,執(zhí)行期間不需要人為干預(yù),完全自動化,避免了人工手動操作帶來的弊端。

4) 降低成本。對于運(yùn)維成本,環(huán)境使用成本,人力成本都能降低。

5) 降低錯誤發(fā)生率。由于是自動化方式處理,代碼的變更和版本控制有審核,會大大降低人為操作的失誤。

6) 進(jìn)行多元化整合。對于復(fù)雜場景下的基礎(chǔ)設(shè)施提供,需要依賴很多組件或者軟件,通過IaC能將多系統(tǒng)、多平臺在統(tǒng)一代碼中進(jìn)行描述,實現(xiàn)多系統(tǒng)、多平臺的整合。

7) 操作過程可審計。在經(jīng)過測試后的代碼上線使用時,擁有執(zhí)行過程記錄,可回溯以往的執(zhí)行事件。

8) 可以實現(xiàn)自服務(wù)。開發(fā)人員處理業(yè)務(wù)需求的時候,可以通過自服務(wù)門戶集成IaC,這樣只需要審核通過后,開發(fā)人員即可以自我實現(xiàn)環(huán)境的上線,大大降低了對基礎(chǔ)設(shè)施管理員的依賴。

3. 實現(xiàn)IaC需要做哪些準(zhǔn)備工作?IaC落地的主要障礙有哪些?

如果要采用IaC,這里有些最佳實踐經(jīng)驗可以分享給大家。最好提前做好以下準(zhǔn)備:

1) 使用具有可分支管理、安全、集成的源代碼管理 (SCM),可以考慮使用git。

2) 選擇經(jīng)過仔細(xì)研究和理解的工具,為編寫的基礎(chǔ)設(shè)施代碼組成自動化引擎,例如ansible或者terraform 等。最終用戶團(tuán)隊能夠理解和使用這些工具。

3) 使用相關(guān)工具后,要在執(zhí)行后能快速獲得基礎(chǔ)設(shè)施狀態(tài)反饋,以便了解執(zhí)行狀態(tài)。

4) 制定開發(fā)人員和基礎(chǔ)設(shè)施團(tuán)隊協(xié)作流程,制定雙方認(rèn)可的標(biāo)準(zhǔn),使提供的基礎(chǔ)設(shè)施環(huán)境能保證業(yè)務(wù)成功上線。

5) 有良好的測試環(huán)境,保證生產(chǎn)和測試場景下的環(huán)境一致性。

6) 要有一個安全的前端,包括帶有憑證管理的權(quán)限管理(RBAC)。

7) 可以迭代完善代碼,測試一次,快速失敗,然后繼續(xù)小步快跑前進(jìn)。

IaC落地的主要障礙有以下幾個:

1) 企業(yè)服務(wù)器規(guī)模較小,管理工作相對較少,需求不強(qiáng)烈。

2) 害怕自動化,執(zhí)行過程不放心。

3) 團(tuán)隊害怕學(xué)習(xí)新技術(shù)或者編寫代碼維護(hù)基礎(chǔ)設(shè)施。

4) 企業(yè)內(nèi)部管理流程限制,權(quán)限不足,審計要求,無法打通多組件。

4. IaC如何工作的?有哪些工具可以幫忙?

IaC的本質(zhì)是通過代碼去調(diào)用管理工具提供的API接口來對設(shè)備進(jìn)行操作。最簡單的IaC工作過程如下圖所示。主要分為5個步奏:1. 編寫代碼(分支并行開發(fā));2. 功能測試; 3. 提交代碼; 4. 變更申請;5. 批準(zhǔn)后執(zhí)行代碼進(jìn)行環(huán)境部署。

常見的IaC工具有如下幾個:Ansible、Terraform、AWS cloudformation、Azure Resource Manager、Google Cloud Deployment Manager、Chef、Puppet、SaltStack。

5. IaC與自動化運(yùn)維、AIOps、DevOps有什么關(guān)系?

IaC是針對基礎(chǔ)設(shè)施進(jìn)行管理,它的落地是需要采用自動化工具對基礎(chǔ)設(shè)施環(huán)境進(jìn)行操作,具體的操作方法是通過編寫代碼的方式實現(xiàn),對基礎(chǔ)設(shè)施的變更操作只需要修改代碼即可完成。而自動化運(yùn)維的維度不僅僅局限在基礎(chǔ)設(shè)施上,因此他們是兩個不同的維度,IaC的落地要借助自動化運(yùn)維的方法。

AIOps是在傳統(tǒng)運(yùn)維的基礎(chǔ)上引入人工智能,通過大數(shù)據(jù)分析或者機(jī)器學(xué)習(xí)等方法來提前感知運(yùn)維狀態(tài),進(jìn)而采用動態(tài)的方式調(diào)整相關(guān)組件或者基礎(chǔ)設(shè)施。因此其維度更廣,IaC可以被AIOps利用,例如在發(fā)現(xiàn)業(yè)務(wù)性能瓶頸時,需要對其后端服務(wù)器進(jìn)行擴(kuò)容,這樣可以提前寫好IaC針對基礎(chǔ)設(shè)施擴(kuò)容的代碼,然后AIOps將這段代碼調(diào)用起來,配合其他的后續(xù)自動化處理任務(wù),共同完成一次業(yè)務(wù)擴(kuò)容的智能運(yùn)維操作。

DevOps是近年來非常受歡迎的一套方法論,追求的是開發(fā)和運(yùn)維一體化,從而加入軟件上線速度。在DevOps流程中IaC的作用是支持開發(fā)環(huán)境和生產(chǎn)環(huán)境的快速交付。

6. 業(yè)務(wù)全部上公有云后,是否還需要IaC?

公有云提供了業(yè)務(wù)運(yùn)行環(huán)境和通用運(yùn)維場景的管理,比如保證了服務(wù)器的可用性等,但是并不具備快速提供特定應(yīng)用的一致的運(yùn)行環(huán)境,IaC正好解決了公有云上的不足之處,提前規(guī)劃好IaC,有利于用戶更好地使用公有云環(huán)境。

7. 紅帽在IaC的落地上能發(fā)揮什么作用?

紅帽在IaC建設(shè)上能提供全球一流的產(chǎn)品(Red Hat Ansible Automation Platform)和技術(shù)服務(wù),同時能提供全球的經(jīng)驗并指導(dǎo)用戶落地和掌握IaC方案,包括IaC的整體方案設(shè)計及落地及后續(xù)的維護(hù)和相關(guān)培訓(xùn),保證用戶能順利掌握IaC。

8. 您認(rèn)為目前市場對這個概念的認(rèn)可程度如何?

從國內(nèi)市場來看,對IaC的采納有行業(yè)屬性的區(qū)分,金融行業(yè)相對制造行業(yè)要更超前一些,雖然沒有全面開展IaC的落地,但是在某些場景下已經(jīng)通過自動化的方式向IaC邁進(jìn),一些IaC工作正是以自動化的名義在進(jìn)行。紅帽在當(dāng)前國內(nèi)市場上所推廣的自動化方案中,大部分都是基于IaC思想,旨在幫助客戶更高效的管理基礎(chǔ)設(shè)施,同時為客戶提供培訓(xùn),保證能力掌握。

《數(shù)字化轉(zhuǎn)型方略》雜志 《數(shù)字化轉(zhuǎn)型方略》雜志