IaC(Infrastructure as Code-基础设施即代码,下文均以IaC表示)已成为DevOps的最佳实践。那些需要在全球搭建基础设施以支持DevOps的企业团队,可以使用IaC与Amazon Web Services(亚马逊云服务)来建立强大的基础。

本文我们提供了实施这种非常强大的技术组合的路线图。

什么是IaC

IaC是一种对IT基础架构的配置和管理形式(IaC授权所有准备计算资源所需要做的工作都可以通过代码来完成)。这包括服务器,网络,负载平衡和安全性。IaC使用软件形式而不是物理硬件,这具有很大的好处。

IaC优点

IaC节省成本。使用自动化可以减少工作量。生成的基础架构时间比花费数小时部署物理硬件和操作系统参数要快得多。

IaC增加了可重用性。这减少了更多硬性部署带来的问题。您不必担心有人因为错过某一个步骤而错误地配置机器(甚至仅仅是稍出差错)。

IaC可以扩展以满足您的需求。现在您可以添加人员,发送软件,添加服务器和扩展存储,而无需等待设备交付和“货架和堆叠”。

IaC增强了合规性。它通过文档记录来提供可回溯的一系列过程。它可以为安全和审计目的提供更好的监控。

IaC工具

如果您已开始在机构中应用DevOps实践,您会发现许多相同的原则和实践,甚至一些工具也可以应用于您的基础架构。

有许多工具可用于提供IaC功能。这些包括:

Ansible

AWS CloudFormation

Chef

Microsoft Azure Resource Manager

Puppet

Saltstack

Terraform

什么是AWS CloudFormation?

CloudFormation是AWS实施IaC的工具。这只是AWS变得如此受欢迎的众多原因之一。您可以通过CloudFormation使用软件描述完整的环境,而不是物理配置硬件和软件环境。

借助AWS按需计算能力和存储,只需单击即可实现IaC。您可以部署新的生产服务器。您还可以快速模拟新工作流程和测试升级。以前,这将很难(或不可能)完成,因为昂贵的硬件将专门用于生产工作负载。

CloudFormation vs. Scripting

在操作系统和软件配置方面,CloudFormation优于脚本编写。它可以协调资源的配置,并且可以本地了解AWS服务。常见情况 - 如等待,重试和对来自其他服务器和应用程序的信号进行操作 - 易于处理,无需编写其他代码。

使用CloudFormation而不是脚本简化DevOps。您可以更轻松地部署/交换服务器,安装软件和测试。所有这些都是通过键盘和浏览器自动完成的。该技术使得管理大型拓扑更加简单。

云部署选项

IaC工具可用于实现内部部署和云服务器的混合部署。有些公司甚至使用多个云。但值得注意的是,使用单一提供商(通过多云策略)部署的独占拓扑具有一些优势。

首先,每个云提供商的服务产品和管理工具都不同。如果您使用单一提供商,工程师只需要了解一个平台。

其次,单个提供商为您提供全局管理功能 - 例如从一个仪表板控制所有服务器的能力。它可以简化身份和访问管理,并提高您监控和收集操作数据的能力。

Helix Core - Perforce的版本控制 - 适用于任何云提供商。您可以将其部署在AWS,Microsoft Azure或Google Cloud Platform(GCP)上。以下是使用CloudFormation作为代码工具的基础架构进行AWS部署的示例。

为什么选择Helix Core和AWS?

随着许多应用程序正在迁移到云,Helix Core用户也是如此。Helix Core的多服务器配置对于依赖硬件和/或软件产品获取收益的组织而言非常流行。

使用Helix Core,AWS和IaC可以更好地实现全局多服务器配置:

1.促进协作

公司希望通过Helix Core提高开发人员的工作效率并扩大全球规模。它通过高级复制功能实现跨地域不同设施的团队之间的协作。许多使用Helix Core的客户都安装了数十台或数百台服务器。这些配置为服务用户并实现全球自动化。

AWS通过全球基础架构足迹立即访问这种多样性,该基础架构包括:

Regions 代表不同的地理区域。

Availability Zones 是区域内的数据中心。

Virtual Private Clouds (VPCs) 是AWS数据中心内的“私有”数据中心。

2.无限制扩展

高性能和可扩展性对于大型产品开发组织至关重要。Helix Core和AWS都具有扩展能力以满足您的需求。这些系统可以处理:

大量开发人员操作(遍布全球)。

很多(大)文件。

需要CI / CD速度。

使用Helix Core和AWS可以支持许多拓扑。其范围从单个虚拟机到复杂的多服务器,多地理和多个LAN / WAN架构。

3.加强安全性

在安全性和合规性方面,AWS和Helix Core非常兼容。Helix Core权限和AWS服务提供了构建深度防御策略的选项。 

CloudFormation的好处

将CloudFormation用作基础架构作为代码可以自动部署和管理:

Helix核心服务器的类型

用例

主(提交)服务器

定义和部署主Helix Core服务器。您可以保护和配置服务器以进行用户和副本访问。

备份和灾难恢复

备份副本可以驻留在同一AWS区域,不同区域或同一区域中,但位于不同的可用区域中。这为您的HA / DR需求提供了适当的多样性。AWS可以帮助跨拓扑自动执行故障转移操作,包括切换证书和DNS更改。

副本服务器

副本支持远程设施中可能有100个贡献者的团队。您可以在靠近设施的AWS VPC中部署副本(即,在不同的AWS区域中)。这些服务器使用AWS内置网络连接到主服务器。

构建服务器

构建服务器 - 使用Jenkins或其他构建运行程序 - 可以驻留在与为远程开发人员团队服务的副本相同的可用区中。这为他们提供了远程办公场所中的高性能CI / CD或者,构建服务器可以部署在Helix Core提交服务器旁边的AWS放置区域中,利用AWS高速网络。

备份和存储

在AWS上,简化了保护检查点文件,日志文件和版本化文件的备份的过程。您可以“快照服务器驱动器,并利用AWS服务(如基于对象的存储(S3)或Glacier)来有效地存储存档。

更换服务器

就像任何机器一样,VM可能会定期遇到问题。当您需要替换时,AWS允许您比使用物理资源更轻松,更快速地部署替换。

升级

当服务器需要更快时,AWS的升力更轻。当您添加人员或项目的大小和速度增加时,您可以按需升级到更快的vCPU和内存配置。

CloudFormation的优势不仅限于资源配置。它还有助于:

  • 配置管理

  • 监控和性能优化

  • 治理和合规

  • 生命周期优化 

如何AWS起步

对于那些刚接触AWS的人,我们将概述选择操作系统,进行虚拟硬件选择以及设置安全性的基础知识。入门很容易。完成所有选择后,您的Stack可以在全球范围内复制。

选择您的操作系统

准备虚拟机与在物理计算机上安装Helix Core类似。使用基于浏览器的AWS管理控制台,选择EC2(弹性计算云)仪表板,启动您的实例。

首先,您选择您的操作系统平台。所有Perforce支持的Linux发行版 - 来自AWS的Amazon Linux,RHEL,Ubuntu和来自第三方的Centos - 以及Windows服务器平台都可用。

配置您的AMI

您的Amazon Machine Image(AMI)规定了虚拟硬件的vCPU,内存和网络(以及其他详细信息)。您需要选择满足性能和可扩展性需求的选项。Helix Core可以部署在各种vCPU,内存和存储配置中。

这些选择范围,非生产选项可能包括具有1个vCPU,1 GiB内存和低到中等网络性能的t2.micro实例。该范围可以达到具有许多vCPU,大量内存和超高性能网络的实例。 

我们建议使用实例类型C(计算机优化)或M(内存优化),以及高速网络的可用选项。

设置安全组

AWS上的安全组提供防火墙的大部分功能。设置安全组很容易。建立并命名组后,您可以将其应用于任何计算机。您只需输入要为入站和出站流量打开的协议和端口。然后,您可以使用CIDR表示法通过IP地址限制到您的计算机的流量。

对于我们的示例,我们使用了“默认”端口1666(使用1667进行TLS连接)。它对整个世界开放(AWS使用的CIDR表示法,0.0.0.0 / 0)。 一旦机器准备就绪并且网络和基本安全性到位,您可以通过使用Secure Shell(SSH)登录来安装软件和实用程序。

为IaC使用CloudFormation模板

您可以使用CloudFormation使用JSON或YAML描述完整的环境。代码中描述的AWS资源集合称为Stack。使用模板,您可以重复创建相同的堆栈。例如,您可以在全球范围内部署cookie cutter Stacks。

当您去部署堆栈时,模板提供选择,然后CloudFormation执行部署。Web上有许多可供下载的示例模板。确保选择满足性能和存储需求的产品。

然后编辑模板以映射:

地区(美国东部2,俄亥俄州)。

您希望提供的实例类型和AMI。

AWS密钥对,用于使用私钥进行加密,安全访问。

操作系统(Linux或Windows)。

此外,您可以分配身份和访问管理(IAM)角色,以使实例能够访问已定义的AWS资源。一旦部署了许多服务器,定义元数据也会使查找和引用实例变得更容易。

部署Helix核心服务器

如果您想在AWS上开始使用Helix Core ,可以通过多种方式安装软件。对于此示例,您可以使用名为用户数据的AWS EC2功能。

用户数据提供了在创建实例时执行预设命令的能力,并且可选地在每次实例启动时执行。

设置Helix核心:

  1. 下载适当的Helix Core组件。这可以在workstation上完成。

  2. 将可执行文件压缩到存档中并命名。对于此示例,“MyHelixCore.zip”。

  3. 从AWS仪表板中,导航并创建S3存储桶。

  4. 将带有Helix Core可执行文件的zip文件上传到存储桶中。

  5. 给压缩文件(MyHelixCore.zip)公共访问权限。

用户数据位于CloudFormation模板中。在该示例中,用户数据安装实用程序,从S3存储桶获取服务器zip文件,设置路径,并使p4d文件可执行。最后,它作为守护进程运行p4d。

一旦CloudFormation完成模板中描述的任务,Stack就会可用。您现在有一个新的,正在运行的Helix Core服务器实例。

使用IaC进行复杂拓扑

使用CloudFormation部署单个服务器并没有利用IaC真正提供的功能。使用AWS和Helix Core的强大组合可以构建更强大的服务。

AWS可以快速在不同的地理区域部署更复杂的拓扑。使用Helix Core,您可以获得支持大型团队和文件的能力,无论他们身在何处。我们在此帮助您加速开发并以无限的规模增强安全性。

Helix core demo:https://info.perforce.com/helix-live-demo-reg.html 

与我们的专家聊聊:https://www.perforce.com/perforce-and-cloud 

原文链接:https://www.perforce.com/blog/vcs/how-build-infrastructure-code-aws-cloudformation