【 #DevOps 】 #IaC 週報 (本週有 Terragrunt 即將支援 Terraform 0.12, 使用 Terraform 管理 Kubernetes, 如何整合 Terraform 與 Ansible, 導入 Terraform 可能遇到的問題) 文章連結: https://www.facebook.com/smalltown0110/posts/2464687666876659 ★ Terragrunt 並沒有跟上 Terraform 0.12 這波的升級,原因在於其主要貢獻者對於 Terragrunt 於 DRY 的堅持,不希望倉促為了支援 0.12 而破壞原則,因此從官方員工請求幫忙協助 (2018/04/27),討論了將近一年多,總算在最近決定好實作的方式,並承諾將在 2019/06/07 完成,大家應該知道我超推薦這個工具的,所以順利的話,下週過後可以來準備升級的 POC 了 ★ 這次官方介紹使用 Kubernetes 加上 Helm Provider 來管理 K8S 從集中的資源,使用 Terraform 管理資源最大的好處在於他會把 State 給記錄下來,所以下次要變更的時候,可以很清楚的知道哪些東西會被新增/修改/刪除,這剛好是目前 K8S 生態系中的工具比較少見的,所以對於本來就在使用 Terraform,而且又有需要管理 K8S 的人,或許可以研究看看 ★ 如何在 Terraform 中觸發 Ansible 去設置機器呢?作者因為最近需要去設定資料庫的環境,因此順便撰寫了這篇文章,大概的步驟當然是要把 Terraform 和 Ansible 都撰寫好,並且將相關組態設定完畢,最後透過 Terraform 的 local-exec 去執行 Ansible 完成設置機器的任務 ★ 看到標題 WTF 以為是貶意,其實是要讚揚XD 文章中其實並沒有詳細的介紹 Terraform 要如何使用,而是講了一個關於導入 IaC 可能會遇到什麼樣問題的故事,因為使用 IaC 之後也不是一勞永逸,還必須要像一般的程式碼去 reviewed, tested, 和 deployed 才行,畢竟它已經把架構轉變為程式碼了 ★ 作者本來使用 Terraform 的 Template 去建立 K8S 資源的 YAML 檔案,但他承認這樣子做是錯的了XD 經過一段時間的使用之後,他覺得應該要讓 Helm 來做 Templating 的工作,所以目前的工作流程變成 terraform -> ssm <- aws-env -> helmfile -> helm -> k8s,而會有 ssm <- aws-env 這段的原因是因為他使用了類似 Kube2iam, Kiam 的解決方案 (AWS 官方目前尚未推出解決方式)…