IaC工具概要比较和IaC生产系统检查单


 

IaC工具

  首次发布 WebSite 语言 代理【被管理机器需安装】 主控服务器 类型
Puppet 2005 https://puppet.com/open-source/ 声明性语言 Puppet Agent 可变基础设施 配置管理
Chef 2009 http://www.chef.io/chef/ 过程性语言 Chef Client 可变基础设施 配置管理
CloudFormation 2011 AWS [闭源] 声明性语言 - - 不可变基础设施 服务开通
SaltStack 2011 https://saltproject.io/ 声明性语言 Salt Minion 可变基础设施 配置管理
Ansible 2012 https://www.ansible.com/ Redhat 过程性语言 - - 可变基础设施 配置管理
Heat 2012 https://wiki.openstack.org/wiki/Heat OpenStack Orchestration program 声明性语言 - - 不可变基础设施 服务开通
Terraform 2014 https://www.terraform.io/ Automate Infrastructure on Any Cloud 声明性语言 - - 不可变基础设施 服务开通

生产IaC检查清单

任务 描述 工具举例
安装 安装二进制软件包和依赖库 Bash. Chef. Ansible, Puppet
配置 软件运行期间的配置,包括端口、TLS证书、服务发现、主节点、从节点、复制等 Bash. Chef. Ansible. Puppet
服务开通 基础设施服务开通,包括服务器、负载平衡器、网络配置、防火墙设置、IAM权限等 Terraform CloudFormation
部署 在基础设施之上部署服务,无停机更新,包括蓝绿部署、浪动部署和金丝雀部署 Kubemetes, ECS Terraform CloudFormation Kubemetes, ECS  
高可用性 在单个流程、服务器、服务、数据中心或区域发生 中断时,服务持续的能力 多数据中心、多区域、复制、自动缩放、负载均衡
扩展性 根据负载进行规模缩放、水平缩放(更多服务器)、垂直缩放(更大的服务器) 自动缩放、复制、分片、缓存、分治
性能 优化CPU、内存、磁盆,网络和GPU的使用。方法包括查询调整,基准测试、负载测试和分析 Dynatrace, valgrind, VisualVM. ab. Jmeter  
网络 配置静态和动态IP、渴门、服务发现,防火墙、DNS, SSH 访问和VPN访问 VPC、防火墙、路山器,DNS 注册, OpenVPN
安全 传输中安全加密(TLS)和磁盘上的安全加密、身份验证、授权、机密管理、服务器强化 ACM, Let's Encrypt. KMS. Cognito. Vault. CIS
度量指标 可用性指标、业务指标、应用指标、服务器指标、 事件、可观察性,跟踪和警报 CloudWatch. DataDog, New Relic,Honeycomb
备份和恢复 定期备份数据库,缓存和其他数据。复制到独立的区域/账户 RDS. ElastiCache, replication
成本优化 选择合适的实例类型,使用竞价型和预留实例、使用自动缩放,清除未使用的资源 自动缩放,竞价型实例,预留实例
文档 记录代码、体系结构和实践,创建剧本来应对事件 自述文件、Wiki, Slack
测试 为基础设施代码编写自动测试,在每次提交后运行测试、每晚运行测试 Terratest. Inspee, Serverspec. kitchen-terraform