云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

亚马逊云_百度云盘你懂的_免费1年

小七 141 0

基础设施作为私有或公共云中的代码

随着技术的进步,我们的工具也在变化。但是,由于大多数人都抵制变革,所以常常需要某种类型的失败—系统中断、灾难恢复失败等—才能让我们改变治理实践。例如,当公司将其运营转移到云上时,他们倾向于像管理本地物理硬件一样管理云基础设施,方法是登录虚拟基础设施的web界面,或者直接登录到系统上,然后通过GUI或CLI应用更改。这些用户还没有通过使用HashiCorp Terraform这样的工具来使用基础设施即代码(IaC)。什么是IaC?它是定义文件中定义为代码的基础设施(cpu、内存、磁盘、防火墙等)。但为什么要改变我们定义和建设基础设施的方式呢?虚拟计算使我们能够通过软件命令构建和应用配置更改。虽然这些命令经常被编写成脚本,但人类还是很难读懂它们。更现代的工具接受了人类和机器可读的代码,并提供了额外的好处。它们简化了代码测试,可以应用和跟踪迭代之间的更改,最重要的是它们使团队能够跨不同的项目重用代码组件(例如模块)。难怪IaC拥有如此多的追随者和用户。»IaC与基础设施生命周期那么IaC如何适应基础设施的生命周期呢?IaC可以应用于整个生命周期,既可以应用于初始构建,也可以应用于基础设施的整个生命周期。通常,这些活动被称为第0天和第1天活动。"第0天"代码规定并配置初始基础设施。如果您的基础架构在初始构建后从未更改(无操作系统更新、无修补程序、无应用程序配置等),则您可能不需要支持后续更新、更改和扩展的工具。""第一天"指的是在您初步构建基础设施之后应用的操作系统和应用程序配置。IaC使配置和应用基础结构配置变得容易,从而节省了时间。它通过在不同的基础设施提供商(如VMware、AWS、Azure、GCP等)中使用通用语法来标准化工作流。IaC使理解基础结构更改的意图变得容易,因为它可以跨越多个文件,允许操作员根据意图组织代码。例如,操作员可以创建不同的文件来定义不同的基础结构组件,或者在不影响执行的情况下将变量定义从执行块中分离出来。下面是IaC工具Terraform将用于提供Amazon VPC的代码示例。请注意,代码是人可读的和机器可读的。资源"aws_vpc""default"{cidr_block="10.0.0.0/16"}像Terraform这样的工具通常包括提供程序和模块的库,以便于编写代码来配置和应用配置。对于Terraform,尤其是当需要仅在第0天时,通常会应用初始配置,如下面的配置来安装和启动web服务器:供应器"远程执行"{内联=["sudo apt get-y更新","sudo apt get-y安装nginx","sudo服务nginx启动"]}如果需要应用第1天到第N天的配置,代码可能会利用Chef、Ansible、Docker等工具。供应商"厨师"{服务器url="https://api.chef.io/organization/example"run_list=["配方[示例]"]}您可以在这里找到一个更复杂的terraformiac示例,它在AWS中提供了一个两层应用程序。»IaC使基础设施更加可靠IaC使更改成为幂等的、一致的、可重复的和可预测的。如果没有IaC,扩展基础设施以满足日益增长的需求可能需要操作员远程连接到每台机器,然后通过执行一系列命令/脚本手动配置和配置多台服务器。它们可能会打开多个会话并在屏幕之间移动,这通常会导致跳过步骤或工作完成方式之间的细微变化,从而需要回滚。可能某个命令在一个实例上运行不正确,在重新正确运行之前已还原。这些进程不一致可能会导致服务器之间的细微差异,随着时间的推移,这些差异可能会影响服务器的性能、可用性或安全性。如果一个大的团队正在应用变更,风险会增加,因为个人并不总是完全遵循相同的指示。使用IaC,我们可以在代码应用到目标环境之前测试代码并查看结果。如果结果与我们的期望不一致,我们就迭代代码,直到结果通过我们的测试并与我们的期望一致。遵循此模式可以在代码应用于生产环境之前预测结果。一旦准备好使用,我们就可以通过自动化、规模化地应用这些代码,确保其应用方式的一致性和可重复性。由于代码签入到版本控制系统中,比如GitHub、GitLab、BitBucket等,所以可以回顾一下基础设施是如何随着时间的推移而演变的。IaC工具提供的幂等特性确保,即使同一代码被多次应用,结果仍然是相同的。»IaC使基础设施更易于管理利用HashiCorp Terraform IaC可以在必要时通过代码实现变异。考虑一个包含两个服务器和一个负载平衡器的环境。为了解决增加的负载,需要额外的服务器。可以对IaC进行修改,只需很少的更改,就可以使用先前定义的配置使新服务器联机。在执行过程中,Terraform将检查当前运行的基础设施的状态,确定当前状态和修改后的期望状态之间存在哪些差异,并指出必须应用的必要更改。当批准继续时,将只应用必要的更改,而不影响现有的有效基础设施。»IaC说得通成功地管理基础设施的生命周期是很困难的,管理决策失误的影响可能是巨大的,从财务和声誉损失到考虑到政府和军队对基础设施的依赖性,甚至会造成生命损失。采用诸如HashiCorp Terraform之类的IaC工具,以及相关和已建立的工具、流程和工作流的使用,是降低这些风险的必要步骤。要了解更多关于Terraform和HashiCorp的其他基础设施工具,请访问Terraform文档并查看我们在HashiCorp learn上的学习轨迹。