2019年3月21日 星期四

infrastructure as code 的組合技 Ansible + Terraform



今天在 Cloud Native Taiwan User Group 看到這篇關於Ansible 與 Terraform 的組合技,就非常有感觸,DevOps 的核心精神之一就是 Infrastructure as Code,但是 Code 就會變成 legacy code 😂,越少去碰它,越少去維護就會臭得更快,尤其是 tool 更新後....






時間回到 2015~2016年,那時候我們使用的組合技是 Ansible + Azure Template + script,透過script  來 trigger Azure template 開啟VM,最後再用Ansible 去 provision,所以流程就是:

開機器---> 灌機器 ---> deploy 程式


直到 2017年底,我才接觸到 Terraform,他的好處就是跨Cloud平台的開啟雲端資源,正好我們又開始遇到跨雲的操作,於是我又將 Infra 的目錄結構又進一步改變如下:




先不管要管的機器是不是很多,或者要維護這些code 要花多少時間,最直接的好處是可以很清楚了解整個組織的系統配置和設定,所以對我來說好的 Naming以及目錄結構很重要,不然就算你跟我說你用ansible 在部署,但是檔案散落一地,後面承接的人也是一頭霧水吧..


而今天看到的文章,在RedHat 和  HashiCorp 的合作下,Ansible 也可以呼叫 Terrarform,而Terrarform 也可以呼叫 Ansible,以我個人來說比較偏愛後者啦~XD

resource “gcp_instance” “web” 
{
# ... provisioner “local-exec” {
command = “ansible-playbook -u ubuntu -i
‘${gcp_instance.web.public_dns},’ main.yml”
}
}



不過時代在演進,上面的組合技可能漸漸也會落伍?!
取而代之的就是改用(cloud) K8S,對於Dev 的好處就是直接跳到 deploy 程式,只要寫(測)好程式,然後丟上去就好,其他就是 SRE 的工作(咦),Dev好開心啊~


好啦...也許 Ansible + Terraform 老兵不死,最後的功用就是用來開K8S Cluster....XDrz..



沒有留言 :