雲端與容器基礎
以宣告式的 IaC(基礎設施即程式碼)工具,套用定義了網路與2台虛擬機器組成的檔案,建立了環境。緊接著在不做任何變更的情況下再次套用同一個檔案,此時發生的事,下列何者適當?
- A定義與實際狀態沒有差異,因此不做任何變更
- B再建立一組相同的組成,虛擬機器變成4台
- C因為環境已經存在,第2次套用會發生錯誤而中斷
查看答案與解析
正確答案:A. 定義與實際狀態沒有差異,因此不做任何變更
在宣告式 IaC 中,程式碼寫的不是步驟而是「應有的組成」,工具與實際狀態比較後,只建立、變更、刪除有差異的部分。因此同一個定義不論套用幾次,結果都相同(冪等性),第2次不會發生變更。若有人手動變更設定,使實際狀態偏離定義(組態漂移),下次套用時會回到定義的狀態。把定義以 Git 管理,也能像程式一樣確認變更歷程並進行審查。
- A. 正確。只變更有差異的部分,因此同一個定義套用幾次都會是相同的狀態。
- B. 這是執行2次寫有建立步驟的腳本時可能發生的情況。宣告式工具不會重新建立已存在的部分。
- C. 宣告式工具會把已存在的資源與定義比較,沒有差異就什麼都不做。