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
|