基础设施

基础设施

Tips

FAQ

Terraform vs Ansible

  • 都是 IaC - Infrastructure as code

  • Ansible

    • 擅长部署 - 因为指令式,一次性执行,无状态
  • Terraform

    • 擅长运维 - 定义状态进行维护,通过 GitOps 维护资源

  • Terraform
    • 操作 接口
    • 只能是 Declarative - 定义式
    • 有状态 - 通过状态 diff 来决定要做什么
    • 无法指定条件、过滤 - 达到全量状态
  • Ansible
    • 通过 主机 执行
    • 可以是 Declarative 和 Imperative - 定义式或过程式
    • 无状态,在执行时判断是否已经达到期望状态再决定是否执行
    • 可以指定各种语义 - 脚本
    • 可以理解成是 Terraform 的超集,但在 Terraform 的领域还是 Terraform 做的更好
    • 可以操作 Terraform,最好配合使用
    • 可以用于生成 Terraform 脚本