Study Notes - CloudFormation
CloudFormation 是 AWS Infrastructure as code (IaS)
的實踐,整理一系列學習筆記與心得。基本概念、生命週期、Debug 技巧等 ….
效益
CloudFormation 主要用來將資源模組化 (model),然後可以快速配置新環境,節省時間,因為是透過文字描述檔 (Template),所以可以進 Source Control,達到版控的目的。文件提到有以下三個效益:
- Simplify Infrastructure Management:簡化基礎建設資源的管理
- Quickly Replicate Your Infrastructure:快速重建基礎建設資源
- Easily Control and Track Changes to Your Infrastructure:更加容易管理和追蹤資源異動
系列文章
底下是 CloudFormation 系列文章的連結與整理。
- Study Notes - CloudFormation
- Study Notes - CloudFormation Template Anatomy
- Study Notes - CloudFormation Resource Types and Attributes
- Study Notes - CloudFormation Stack
- Study Notes - CloudFormation Debugging
類似工具與技術 (Alternatives)
除了 CloudFormation,其他還有很多的產品,是 Chef、Ansible、Puppet、Salt 是類似的東西。
這些產品可以做到類似的 IaC 的事情,但是概念與用途不見得雷同
但我覺得還是有差異的,其他的比較是針對 OS 上面的 Application 做自動化,CloudFormation 則是可以從 Network、Instance (VM) 提供 (Provisioning)、配置 (Configure Management),涵蓋層面廣泛很多,缺點就是:他是 AWS 自己的,無法跨其他 Cloud。
除了 CloudFormation,還有其他很多類似的工具,以下整理知名的:
Terraform
:是最有名的 IaC 產品,可以跨不同的 Cloud,像是 AWS、Azure 等。Ansible
:也有 Cloud Module,可以做類似的事情,但不是那麼完整,他還是比較適合 Application Level 的 Deployment。Chef / Puppet
: 都比較適合應用程式的部署 (Deployment), 也可以做作業系統內部的程式 Provisioning.
我把 DevOps 分成幾個 Stages: Provisioning, Deployment, Configuration, Observation, Security.
CloudFormation 則是屬於 Provisioning、Configuration、Security,完成後再讓應用程式透過其他工具部署上去。
用 Container 的術語來說,我描述的 DevOps Stages 叫做 Orchestration,現在流行的有 K8S / AWS ECS