本文同步刊登於個人技術部落格,有興趣關注更多 Kubernetes、DevOps 相關資源的讀者,請務必追蹤從零開始的軟體工程師之旅,喜歡的話幫我按讚分享、歡迎留言、或是許願想要看的文章。
如果有技術問題也可透過粉絲專頁 討論,技術方面諮詢免錢、需要動手做另計 XD。
先簡單講一下 Infrastructure as Code 概念 (Yeah 終於要講技術了)
上面都講概念跟心法,現在實際講用到的技術。
首先是 Infrastructure as Code,這個概念很久了,但導入的公司好像不是那麼多。所以我今天要來傳教,洗腦大家(XD,跟你推薦這個配方保證快又有效(XD)
https://www.terraform.io/guides/core-workflow.html
terraform 經手(apply) 過的 resource 會納入 state (scope)
不在 scope 裡的 resource 不會納入 plan,不會被 destroy,但可能會 create duplicated ID
terraform 允許直接操作 state
注意是 diff state 喔,所以每次 plan 時候會自動 refresh state
state 又是什麼? remote 是一個動態環境,可能會多會少,這樣沒辦法 diff,state 是把我執行當下,遠端相關資源的狀態快照存起來,然後根據這個 snapshop 去 diff
apply 只是拿你的期待去 diff state,terraform 幫你算出來差多少,例如我們這邊就是遠端少一台。terraform 透過 provider 去知道,喔這一台要去打那些 GCP API,把這台生出來。
State,是 Terraform 核心概念,我當初自己卡觀念是卡這邊,所以我特別拉出來講
總之,Iac 就是用程式化的語法,精準的描述雲端的狀態或是步驟,完全沒有模糊的地帶。帶來的好處,降低維運的錯誤風險,加快維運效率,最佳化節省成本。
明天會分享公司導入的經驗,包含針對的需求、是否考慮導入、需要考慮的原因、實際導入的步驟