IaC工具
首次发布 |
WebSite |
语言 |
代理【被管理机器需安装】 |
主控服务器 |
类型 |
|
Puppet |
2005 |
声明性语言 |
Puppet Agent |
有 |
可变基础设施 配置管理 |
|
Chef |
2009 |
过程性语言 |
Chef Client |
有 |
可变基础设施 配置管理 |
|
CloudFormation |
2011 |
AWS [闭源] |
声明性语言 |
- |
- |
不可变基础设施 服务开通 |
SaltStack |
2011 |
声明性语言 |
Salt Minion |
有 |
可变基础设施 配置管理 |
|
Ansible |
2012 |
Redhat |
过程性语言 |
- |
- |
可变基础设施 配置管理 |
Heat |
2012 |
https://wiki.openstack.org/wiki/Heat OpenStack Orchestration program |
声明性语言 |
- |
- |
不可变基础设施 服务开通 |
Terraform |
2014 |
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 |